看看StatefulWidget的使用情况,我想知道设计决策是否像这样具有循环依赖:
class YellowBird extends StatefulWidget {
const YellowBird({ Key key }) : super(key: key);
@override
_YellowBirdState createState() => _YellowBirdState();
}
class _YellowBirdState extends State<YellowBird> {
@override
Widget build(BuildContext context) {
return Container(color: const Color(0xFFFFE306));
}
}示例取自Flutter StatefulWidget docs
有什么想法吗?
发布于 2020-03-13 04:08:16
这是构建有状态窗口小部件的正确方法之一,并且与flutter文档完全一致。
发布于 2020-03-13 04:54:04
这不是circular dependency。您正在定义一个Stateful Widget类和一个相应的State类。小部件包含一个State对象(或者更确切地说,是它的一个子类),它使用composition-over-inheritance的原理。
从Stateful widget documentation
StatefulWidget实例本身是不可变的,并且将其可变状态存储在由createState方法创建的单独的state对象中,或者存储在该状态订阅的对象中,例如Stream或ChangeNotifier对象,对这些对象的引用存储在StatefulWidget本身的final字段中。
通过这种方式,Flutter框架可以更好地管理此Widget数据的操作和更改。例如(来自上面的链接):
...如果小部件已插入到树中的多个位置,则多个状态对象可能与同一StatefulWidget相关联。
这种组合重于继承的原则是Flutter框架的核心概念,大多数集成开发环境可以自动为你创建这种样板代码(例如,在AndroidStudio上输入stful会建议StatefulWidgets类和它的状态相关类),所以你不必担心。
https://stackoverflow.com/questions/60660867
复制相似问题