Flutter 颤振如何确定何时重建小部件?
请看下面的代码片段Flutter 颤振如何确定何时重建小部件?,flutter,build,widget,element,Flutter,Build,Widget,Element,请看下面的代码片段 类MyHomePage扩展StatefulWidget{ @凌驾 _MyHomePageState createState()=>\u MyHomePageState(); } 类_MyHomePageState扩展状态{ 最终子项=CustomTextWidget(); @凌驾 小部件构建(构建上下文){ 返回脚手架( appBar:appBar(), 正文:中( 孩子:升起按钮( child:child,//CustomTextWidget(), 已按下:(){ setS
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
最终子项=CustomTextWidget();
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(),
正文:中(
孩子:升起按钮(
child:child,//CustomTextWidget(),
已按下:(){
setState((){});
}
),
),
);
}
}
类CustomTextWidget扩展了无状态Widget{
CustomTextWidget(){
打印(“构造”);
}
@凌驾
小部件构建(构建上下文){
印刷(“建成”);
返回文本(“单击我”);
}
}
我可以理解为什么在下面的代码中,每次构建都会调用CustomTextWidget
的构造函数和构建方法。这是因为我每次都给一个新的对象
RaisedButton(
子项:CustomTextWidget(),
已按下:(){
setState((){});
}
),
但是为什么如果我给它child
的话,CustomTextWidget
对象的构建方法不会在每次构建时都被调用呢?构造函数被调用一次,这是有意义的,然后构建方法被调用一次。为什么不使用每个setState
调用build
RaisedButton(
孩子:孩子,
已按下:(){
setState((){});
}
),
颤振如何决定何时调用这些构建方法
RaisedButton(
child: child,
onPressed: () {
setState(() {});
}
),
未调用build
,因为对象未更改。颤振必须使用相等运算符==
来确定调用setState
时小部件/对象是否发生了更改。如果值为false,则不调用构建。在有状态和无状态小部件中都是如此。因此,这里的要点是尽可能始终使用const
,如果不希望重新生成小部件,则在重新生成上下文之外声明它们
请记住,对于StatefulWidget
s,关于元素树持有的State
对象何时被重新创建还有另一个概念,在这方面,flatter查看StatefulWidget
的类型以及键来确定是否应该重新创建State
对象
我希望这能帮助其他人
在这个例子中,干杯
RaisedButton(
child: child,
onPressed: () {
setState(() {});
}
),
未调用build
,因为对象未更改。颤振必须使用相等运算符==
来确定调用setState
时小部件/对象是否发生了更改。如果值为false,则不调用构建。在有状态和无状态小部件中都是如此。因此,这里的要点是尽可能始终使用const
,如果不希望重新生成小部件,则在重新生成上下文之外声明它们
请记住,对于StatefulWidget
s,关于元素树持有的State
对象何时被重新创建还有另一个概念,在这方面,flatter查看StatefulWidget
的类型以及键来确定是否应该重新创建State
对象
我希望这能帮助其他人
干杯如果有人能提供一个链接,详细解释颤振构建算法,那就太好了。这可能与您将孩子存储在一个状态有关,该状态附加到一个元素,而不是一个小部件。小部件总是被重建的,这些类基本上就是我们——程序员——看到的,每次父调用setstate或依赖的继承小部件更改时,它们都被重建,然后这些小部件通过类名和/或键与元素相关联,元素代表框架实际呈现的内容。当你在编程时,这是一个很好的想象方式。你可以在互联网上阅读更多内容:如果有人能提供一个链接,详细解释颤振构建算法,那就太好了。这可能与你将你的孩子存储在一个状态有关,这个状态是附加到一个元素上的,而不是一个小部件。小部件总是被重建的,这些类基本上就是我们——程序员——看到的,每次父调用setstate或依赖的继承小部件更改时,它们都被重建,然后这些小部件通过类名和/或键与元素相关联,元素代表框架实际呈现的内容。当你在编程时,这是一个很好的想象方式。你可以在互联网上阅读更多内容: