在flutter中创建一个有状态的小部件时,你可能不希望小部件的某些字段发生变化。在这种情况下,我很难弄清楚是总是从状态的widget
引用中引用这些字段更好,还是在状态中声明这些字段更好,然后从小部件中获取任何初始值。例如:
class MyStatefulWidget extends StatefulWidget {
final bool? mutateMe; // allows the user to provide an initial value of a mutable field
final bool? doNotMutateMe; // allows the user to provide the value of a field that is not intended to be mutated
MyStatefulWidget({ super.key, this.mutateMe, this.doNotMutuateMe });
@override State<MyStatefulWidget> createState() => MyStatefulWidgetState();
}
class MyStatefulWidgetState extends State<MyStatefulWidget> {
late bool mutateMe;
late bool doNotMutateMe; // <-- HERE: is it better to include this field here?
@override void initState() {
mutateMe = widget.mutateMe ?? true;
doNotMutateMe = widget.doNotMutateMe ?? false;
}
// ...
}
对于像doNotMutateMe
这样的字段,不打算修改,在state对象中重新创建字段是否有意义,并且总是引用widget.doNotMutateMe
?我读到state对象比小部件更有效,所以我很好奇这可能有什么含义?
1条答案
按热度按时间hmtdttj41#
正如您所提到的,我更喜欢在state类上使用
widget.variableName