flutter - 为什么在 StatefulWidget 中没有定义 build 方法?

标签 flutter statefulwidget

我目前正在学习 Flutter。我试图深入研究 Flutter Widget 的生命周期,我想知道为什么 StatefulWidget是这样写的:

class Example extends StatefulWidget {
  @override
  _ExampleState createState() => _ExampleState();
}

class _ExampleState extends State<Example> {
  // initState
  // setState
  // ...
  @override
  Widget build(BuildContext build) {
    ...
  }
}

但不是 :
class Example extends StatefulWidget {
  // initState
  // setState
  // ...
  @override
  Widget build(BuildContext build) {
    ...
  }
}

我认为后者使来源变得简单。但我不知道他们为什么使用以前的风格?

最佳答案

原因 StatefulWidget 使用单独的 State 类而没有 build 其主体内部的方法是因为 Widget 中的所有字段是不可变的,这包括它的所有子类。

您可能已经注意到 StatelessWidget 有它的 build 以及其中定义的其他相关方法,但由于 的性质,这是可能的StatelessWidget 它完全使用提供的信息呈现,并且不希望其 future 发生任何变化。 State .

的情况下StatefulWidget , State 在应用程序运行过程中,信息偶尔会发生变化(或预计会发生变化),因此该信息不适合存储在最终字段 ( build ) 中以满足 Widget类条件( 所有字段都是不可变的 )。这就是为什么 State 类(class)介绍。你只需要覆盖 createState 功能附加您定义的 State 给您的 StatefulWidget ,让所有这些变化发生在一个单独的类中。

关于flutter - 为什么在 StatefulWidget 中没有定义 build 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57518276/

相关文章:

flutter - 仅适用于一个平台的 Pubspec 依赖项

flutter - 整数列表的基本操作

macos - 如何更改 Flutter Desktop 光标指针?

flutter - 如何在 flutter 中重用有状态的小部件

flutter - Flutter中的setState()方法直到for循环中的最后一次调用才更新 View

flutter - 我无法使用 google_sign_in 在 Flutter 中登录我的 Google 帐户

flutter - 如何滚动到包含 Flutter 中扩展项的列中的 TextView?

flutter - 当我们可以在第一行代码中初始化一个变量时,为什么要在 flutter 中使用 initState()

flutter - 为什么父级StatefulWidget中的setState不会更新子级StatefulWidget

dart - Flutter 中的有状态和无状态小部件之间的关系是什么?