【问题标题】:Scoped Model, BLoC pattern, StreamBuilder and Inherited Widget(or Model) which one should I chose and why?Scoped Model、BLoC 模式、StreamBuilder 和 Inherited Widget(或 Model)我应该选择哪一个,为什么?
【发布时间】:2019-05-17 03:13:54
【问题描述】:

我想我现在对如何使用 BLoCStream Builder 至少有了一个模糊的概念和我的应用中的 Inherited Widget(或 Model)(没什么特别的,但对我来说这需要时间),但是使用 Scoped Model
我有一种生存危机:我觉得他们大多可以做同样的事情,或者至少我可以用他们中的任何一个取得相同的明显结果,但我没有能力理解何时为什么 一个比另一个好。

【问题讨论】:

  • “我故意让这个问题保持开放,不要因此而讨厌我,”我想没有人会因此而讨厌你,这只会让 StackOverflow 上的问题偏离主题。
  • 我没有尝试过 BLoC 或 Scoped Model。我使用 Redux 参与了一个更大的项目。 StreamBuilderInheritedModel 更通用。 BLoC、ScopedModel 和 Redux 更具架构特定性。您可能可以将 Redux 与 BLoC 或 ScopedModel 结合使用,但如前所述,我还没有仔细研究这两个。
  • 我建议改为在 Gitter/Slack/Reddit 上询问。 StackOverflow 不适合这类问题。
  • 我觉得这是一个合理的问题,如果它更像是“每个人的力量是什么”,而不是何时使用。我确实认为这个问题会帮助很多刚接触 Flutter 的人。
  • 我建议查看github.com/brianegan/flutter_architecture_samples,因为它以各种架构模式实现了一个简单的应用程序。然后,您可以自己决定哪个对您最感兴趣。

标签: flutter bloc stream-builder inherited-widget scoped-model


【解决方案1】:

范围模型与 Bloc

简而言之:如果您有小型应用程序,请使用 范围模型,因为 bloc 往往会使它复杂化,如果您有大型应用程序,请使用 bloc
详细解释见这篇文章:bloc vs scoped_model


Stream Builder vs Inherited Widget

这是 Remi Rousselet 给出的 stream builderinherited widget 之间的一个很好的比较:https://stackoverflow.com/a/49958864/10471480

Streams/Sink 绝对是存储状态的绝佳选择。有一些现有的架构,例如 BLoC 使用它们很多。

但是,Streams 也不能完全取代InheritedWidgetInheritedWidget 具有很酷的功能,可以仅覆盖屏幕的一部分内容。一个很酷的应用是Theme

一般来说,Streams 存储业务逻辑很酷。但是当你需要存储 UI 逻辑时,InheritedWidgets 占了上风。

【讨论】:

猜你喜欢
  • 2019-07-23
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 2019-06-12
  • 2010-10-24
  • 1970-01-01
  • 2019-01-15
相关资源
最近更新 更多