使用GetX时的BuildContext

4

我尝试重构我的Flutter应用并开始使用GetX库。 我使用库 "flutter_form_builder",这里有一些方法需要BuildContext参数。例如:

String? Function(T?) FormBuilderValidators.equal<T>(
  BuildContext context,
  Object value, {
  String? errorText,
})

我尝试将Get.context作为参数添加,但是Get.context的类型是BuildContext?而不是BuildContext。您有什么解决办法吗?

1
如果你确定 Get.context 不会为空,那么你可以在其后添加一个感叹号来告诉 Flutter 在运行时它不会为空。Get.context! - Stack Underflow
谢谢,这是个好主意,现在我有两种方法:Get.context! 或者 Get.context as BuildContext。哪个更好呢? - sosnus
1
叹号用于明确告知空安全检查,您确定在运行时该值不会为空。如果您无法确定,则可能不应该走这条路,因为整个重点是防止运行时异常,而您将会规避它们。 - Stack Underflow
我强烈建议您避免使用Get.context,因为它违反了Flutter的BuildContext概念。尽可能在需要时通过方法传递上下文。 - Salar Arabpour
1个回答

2

当您需要在UI之外使用时,可以使用Getx包中提供的Get.context,并用!标记它,以便它成为BuildContext类型:

Get.context // this is BuildContext?
Get.context! // this is BuildContext

你也可以直接这样转换:

Get.context as BuildContext // this is BuildContext

注意:使用Get.context需要将MaterialApp更改为GetMaterialApp,这样它就永远不会为空,否则会抛出null错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接