Dart 为什么直接变异变量会重建小部件?
请运行此小部件:Dart 为什么直接变异变量会重建小部件?,dart,flutter,Dart,Flutter,请运行此小部件: class MyWidget extends StatefulWidget { @override _MyWidgetState createState() => _MyWidgetState(); } class _MyWidgetState extends State<MyWidget> { bool aBoolean = false; @override Widget build(BuildContext context) {
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
bool aBoolean = false;
@override
Widget build(BuildContext context) {
print('aBoolean will change over press button: $aBoolean');
return RaisedButton(
onPressed: () {
aBoolean = !aBoolean;
},
child: const Text("Press Me"),
);
}
}
类MyWidget扩展了StatefulWidget{
@凌驾
_MyWidgetState createState()=>\u MyWidgetState();
}
类_MyWidgetState扩展状态{
bool-aBoolean=假;
@凌驾
小部件构建(构建上下文){
打印('aBoolean将在按下按钮时发生变化:$aBoolean');
返回上升按钮(
已按下:(){
aBoolean=!aBoolean;
},
子:常量文本(“按我”),
);
}
}
变量
aBoolean
将在每次按下按钮时更改。。这是否意味着直接变异变量将重建小部件。。?那么,setState({})
的作用是什么呢。。?我应该直接修改变量还是使用setState.?除非调用setState
(除了少数例外),否则小部件不会重新生成
因此,调用setState
不是可选的
如果只直接更改状态而不调用setState,框架可能不会计划生成,并且此子树的用户界面可能不会更新以反映新状态
资料来源:
它可以在不调用setState的情况下重建,但正如文档所示,它在下一个场景中可能无法工作。最好使用setState方法变异state
“为什么直接变异变量会重建小部件?”
-不,它不会重建小部件:为此,您必须调用setState()