Flutter:初始化类中变量的差异

时间:2018-11-20 00:10:21

标签: class oop dart flutter

当前,我正在通过initState分配所有变量,但是我看到没有必要通过initState分配变量,因为我可以直接为变量分配一个值。这些分配的顺序是什么?它们有什么不同?为什么以及何时选择一个而不是另一个?

class Person {
  String name = "John";

  @override
  void initState(){
  ....
  ....
  }
}

vs

class Person {
  String name;
  @override
  void initState(){
    name = "John";
  }
}

2 个答案:

答案 0 :(得分:1)

在您的第一个示例中,分配是在构造期间进行的。如果namefinal,则可能要使用此表单。

在第二个示例中,分配是在调用initState时进行的,该调用可以为零,一次或多次。大概是指initState的{​​{1}},在构造之后,框架会调用一次。

答案 1 :(得分:1)

区别在于无法像AnimationController(vsync: this)那样向第一个变量分配动态内容,您必须在initState中执行此操作。

我猜initState分配会降低性能,因为您有更多选择。

我建议在可能的情况下使用常规的变量分配方式,并且仅在必要时使用initState()。