首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作用域模型的目的/在内置状态管理工程时提供包

作用域模型的目的/在内置状态管理工程时提供包
EN

Stack Overflow用户
提问于 2019-11-27 07:38:51
回答 2查看 36关注 0票数 0

初来乍到,请原谅我的问题。

我在玩弄使用状态小部件管理整个应用程序的状态(变量/对象)的需要--这有点麻烦,但我得到了这个方法。

我看到有一些包提供了类似的功能(scoped_modelprovide) --它们给混合带来了什么?它们解决了什么问题?在开始一种特定的方法之前,我想我是在问经验丰富的颤栗开发人员正在使用什么以及为什么?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-27 09:15:32

它主要是关于应用程序的可伸缩性和性能。对于小型应用程序来说,使用StatefulWidget是可以的,但是想象一下,如果您有一个深度为30的小部件树,而只有两个叶小部件需要知道一些counter值,并且它们都位于小部件树的两端。使用StatefulWidget方法,您必须将值放在树的顶部,并将其传递到整个树下,这样两个小部件就可以得到它。然后,过一段时间,您还需要树的一个完全无关的分支中的另一个小部件来获得counter --现在您需要修改整个分支来传递值。然后,稍后,您决定将原来的一个叶子移到另一个地方--再一次,您必须修改整个代码库以适应这种情况。

通过使用InheritedWidgetproviderscoped_model都可以使用,您可以将counter注入到树的顶部,并让需要它的小部件使用Consumerscoped_model等效工具从context中提取值。这还将解决另一个问题:既然中间部件都不了解counter,那么当值发生变化时,它们就不再需要重新构建了。现在,您可以随意移动您的小部件并添加/删除对counter的依赖关系,而不是像这样处理不相关的小部件。

您甚至可以更进一步使用blocs。我记得我读过一篇比较所有方法的文章,发现bloc可以通过消除某些构建来进一步提高应用程序的性能,尽管一开始理解bloc模式中发生了什么可能有点让人望而生畏。

票数 1
EN

Stack Overflow用户

发布于 2019-11-27 22:20:04

只使用StatefulWidget并不坏。您不必使用提供者/作用域模型。

默认情况下,StatefulWidgets非常强大并具有可伸缩性。

他们的缺点是:

  • 他们是非常冗长的
  • 很难在有状态小部件之间重用有状态逻辑(尽管有变体,比如flutter_hooks)
  • 重构可能是痛苦的

这些都是InheritedWidgets解决的问题,提供者/作用域模型也是如此。

但正如你所看到的,这些主要是生活质量的问题。如果您可以支持它们,那么只使用StatefulWidget是可以的。

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

https://stackoverflow.com/questions/59065256

复制
相关文章

相似问题

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