我目前正在开发一个移动的应用程序,我正在实现一个小的用户第一次使用教程。
因此使用ShowCaseView2.0.0 +1 Flutter包。
这个包需要在安装和构建小部件时调用回调。
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback(
(_) => ShowCaseWidget.of(context)
.startShowCase([_one, _two, _three, _four, _five]),
);
}
唯一的解决方案是使用有状态窗口小部件。
我的问题是,我使用了很多MVVM,更改通知程序模式,以避免在我的应用程序中使用有状态小部件。我的大多数小部件都是无状态的。
如果我把我想展示的小部件转换成有状态的,这真的很糟糕吗?(特别是我不会在其中使用setState?))
谢谢你的帮助
1条答案
按热度按时间esyap4oy1#
在性能方面,如果您不使用
setState
,StatelessWidget
和StatefulWidget
之间的速度通常没有显着差异。由于StatelessWidget
没有可变状态,因此Flutter不需要执行任何与状态相关的操作,例如在状态更改时区分和更新小部件树。但是,值得注意的是,由于关联的状态对象,使用
StatefulWidget
会带来很小的开销。即使不使用setState
,框架仍然需要为小部件创建和管理State示例。这种开销通常可以忽略不计,除非您有特定的需求需要使用StatefulWidget
,否则您通常可以坚持使用StatelessWidget
,以获得更好的代码简单性和可维护性。在质量方面,
StatelessWidget
和StatefulWidget
同样能够生成高质量的UI。它们之间的选择取决于您是否需要管理小部件中的可变状态。如果您的UI需要状态管理,例如响应用户交互或异步获取数据,那么StatefulWidget
是合适的选择。但是,如果您的UI纯粹基于输入属性,并且不需要可变状态,那么StatelessWidget
就足够了,并且由于其简单性和可预测性而经常被推荐。