当前,我正在通过initState分配所有变量,但是我看到没有必要通过initState分配变量,因为我可以直接为变量分配一个值。这些分配的顺序是什么?它们有什么不同?为什么以及何时选择一个而不是另一个?
class Person {
String name = "John";
@override
void initState(){
....
....
}
}
vs
class Person {
String name;
@override
void initState(){
name = "John";
}
}
答案 0 :(得分:1)
在您的第一个示例中,分配是在构造期间进行的。如果name
是final
,则可能要使用此表单。
在第二个示例中,分配是在调用initState
时进行的,该调用可以为零,一次或多次。大概是指initState
的{{1}},在构造之后,框架会调用一次。
答案 1 :(得分:1)
区别在于无法像AnimationController(vsync: this)
那样向第一个变量分配动态内容,您必须在initState中执行此操作。
我猜initState分配会降低性能,因为您有更多选择。
我建议在可能的情况下使用常规的变量分配方式,并且仅在必要时使用initState()。