首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >颤动StatefulWidget

颤动StatefulWidget
EN

Stack Overflow用户
提问于 2020-03-13 03:38:22
回答 2查看 132关注 0票数 1

看看StatefulWidget的使用情况,我想知道设计决策是否像这样具有循环依赖:

代码语言:javascript
复制
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

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2020-03-13 04:08:16

这是构建有状态窗口小部件的正确方法之一,并且与flutter文档完全一致。

票数 0
EN

Stack Overflow用户

发布于 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类和它的状态相关类),所以你不必担心。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60660867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档