dart Flutter -如果我们不使用setState,有状态和无状态小部件的性能是否相似?

osh3o9ms  于 2023-05-04  发布在  Flutter
关注(0)|答案(1)|浏览(145)

我目前正在开发一个移动的应用程序,我正在实现一个小的用户第一次使用教程。
因此使用ShowCaseView2.0.0 +1 Flutter包。
这个包需要在安装和构建小部件时调用回调。

@override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback(
      (_) => ShowCaseWidget.of(context)
          .startShowCase([_one, _two, _three, _four, _five]),
    );
  }

唯一的解决方案是使用有状态窗口小部件。
我的问题是,我使用了很多MVVM,更改通知程序模式,以避免在我的应用程序中使用有状态小部件。我的大多数小部件都是无状态的。
如果我把我想展示的小部件转换成有状态的,这真的很糟糕吗?(特别是我不会在其中使用setState?))
谢谢你的帮助

esyap4oy

esyap4oy1#

在性能方面,如果您不使用setStateStatelessWidgetStatefulWidget之间的速度通常没有显着差异。由于StatelessWidget没有可变状态,因此Flutter不需要执行任何与状态相关的操作,例如在状态更改时区分和更新小部件树。
但是,值得注意的是,由于关联的状态对象,使用StatefulWidget会带来很小的开销。即使不使用setState,框架仍然需要为小部件创建和管理State示例。这种开销通常可以忽略不计,除非您有特定的需求需要使用StatefulWidget,否则您通常可以坚持使用StatelessWidget,以获得更好的代码简单性和可维护性。
在质量方面,StatelessWidgetStatefulWidget同样能够生成高质量的UI。它们之间的选择取决于您是否需要管理小部件中的可变状态。如果您的UI需要状态管理,例如响应用户交互或异步获取数据,那么StatefulWidget是合适的选择。但是,如果您的UI纯粹基于输入属性,并且不需要可变状态,那么StatelessWidget就足够了,并且由于其简单性和可预测性而经常被推荐。

相关问题