我目前正在学习 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/