首页 > 解决方案 > 理解 Flutter 中 StatefulWidget 的使用

问题描述

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

class RandomWords extends StatefulWidget {
  @override
  createState() => new RandomWordsState();
}
class RandomWordsState extends State<RandomWords> {
  ...
}

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

提前致谢。

标签: dartflutterstatefulwidget

解决方案


外部类”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');
  }
}

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

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

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


推荐阅读