请澄清' StatefulWidget '的文档.构建的方法



在"性能考虑"&;,第三点提到了以下内容:

如果子树没有更改,则缓存表示该子树的小部件,并在每次可以使用它时重用它。为此,将小部件分配给最终状态变量,并在构建方法中重用它。重用一个小部件要比创建一个新的(但配置相同的)小部件高效得多。另一种缓存策略是将小部件的可变部分提取到一个接受子参数的StatefulWidget中。

不清楚什么是"状态变量"。在这里,要分配什么,因为"构建"。在这一行中提到了术语,并且每个小部件也有一个build方法

我的意思是,

用户应该做final Widget widget = MyWidget();还是final Widget widget = MyWidget().build(context);

当它们都返回Widget时,

还请解释一下,上述语句之间是否有任何区别,Builder小部件的用途是什么,如果我们有build方法,或者它们有不同的工作,如果有,然后呢??

感谢你

永远不要运行自己的build方法,构建方法是为flutter调用更新的上下文,你不应该使用它。始终执行MyWidget()

Builder小部件是有用的,当您需要一个新的上下文在您的小部件,例如:

Widget build(BuildContext context) { // context crated here
return MaterialApp( // navigator created here, after the context was defined
home: ElevatedButton(
onPressed: () => Navigator.of(context).pop()
), 
);
}

这段代码不能工作,因为context是在导航器之前创建的(它是与一个材料应用程序一起创建的),你可以将按钮包装在一个构建器小部件中,以获得一个已经有导航器的新上下文

当然,自己调用build方法是不好的,因为你不会把正确的上下文传递给小部件,相反,让flutter处理上下文创建,只使用普通的构造函数。

最新更新