将BuildContext保存在variable中作为类实例是个好主意吗



这是个好主意吗?

// Maybe save the context here?
// BuildContext _ctx;
Widget _buildItem() {
// No context here!!!
}
@override
Widget build(BuildContext context) {
// we have the context here
final dataList = getDataList(context);
return ListView(
children: dataList.map(_buildItem).toList(),
); 
}

更新:我刚刚找到Builder小部件。这是一个好的用例吗?

将上下文保存在变量中不是一个好的做法。当您需要上下文时,请始终搜索替代解决方案。此外,当您必须创建自定义小部件时,请创建一个扩展无状态小部件的新类,而不是使用函数。如果您来自react,这里没有钩子,所以将来更新小部件可能会很麻烦。使用类是创建自定义组件的正确方式,并且具有各种优点,如性能、小部件检查器等。

如果你不能在这里放弃功能声明,这里有一篇有趣的文章:https://medium.com/flutter-community/use-functional-widgets-in-flutter-to-reduce-boilerplate-code-9e815c2ddb94

如果你想在任何地方访问context,即使是在build方法之外,你也可以使用Get包,无论在哪里都可以保存你的应用程序的上下文。每次需要context时,只需像Get.context一样简单即可

最新更新