理解StatefulWidget在Flutter中的使用

Neo*_*Neo 4 dart flutter statefulwidget

我刚刚开始摆弄 Flutter,我无法理解StatefulWidget. 我在教程等中看到的所有这些小部件都可以实例化 aState<MyWidget>并让它完成所有工作。
例如,从这个(官方)教程:

class RandomWords extends StatefulWidget {
  @override
  createState() => new RandomWordsState();
}
class RandomWordsState extends State<RandomWords> {
  ...
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是为什么要这样构建以及外部类的用途是什么(在我的示例中RandomWords)。

提前致谢。

cre*_*not 5

所述“外部类”final,每小部件是final(不可变)。这意味着它的所有属性也必须是final

class RandomWords extends StatefulWidget {
  final String name;

  @override
  createState() => new RandomWordsState();
}

class RandomWordsState extends State<RandomWords> {
  String name;

  @override
  void initState() {
    name = widget.name;
    super.initState();
  }

  @override
  Widget build(BuildContext context) => Text(name);

  void someMethod() {
    print(widget.name);
    setState(() => name = 'new name');
  }
}
Run Code Online (Sandbox Code Playgroud)

从可以访问的State所有字段中StatefulWidget,显然不会更改,因为它们是final.

State但是,可以更改数据setState将执行其回调,然后重建State(用新的数据)。

StatelessWidget也可以重建,即当它的父级正在重建时,但所有状态都丢失并且没有数据保留。这就是State's 的用途。