您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Flutter StatefulWidget中为initState内的变量赋值或不赋值之间有什么区别?

在Flutter StatefulWidget中为initState内的变量赋值或不赋值之间有什么区别?

如果可以直接在属性中创建变量初始化,请执行此操作。可读性更好(一个地方寻找)。

您要使用的唯一原因initState无法 直接从其声明中初始化变量。

这些情况大部分是:

例如,如果要创建一个,则AnimationController需要传递它vsync: this。但是以下内容无法编译:

class MyState extends State with SingleTickerProviderStateMixin {
  final myController = AnimationController(
    vsync: this, // compile error, cannot use `this` on initialisers
  );
}

而且您不得不写:

class MyState extends State with SingleTickerProviderStateMixin {
  AnimationController myController;

  @override
  void initState() {
    super.initState();
    myController = AnimationController(
      vsync: this, // OK
    );
  }
}

尽管请注意,随着Dart的未来版本将引入late关键字,此特定示例将很快更改,该关键字随后将允许:

class MyState extends State with SingleTickerProviderStateMixin {
  late final myController = AnimationController(
    vsync: this, // OK, not a compile error this time
  );
}

您可能仍然需要initState依赖于widget/的变量context

其他 2022/1/1 18:16:12 有569人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶