为啥使用 InheritedWidget 而我们可以使用 Broadcast Streams | StreamBuilder 和静态变量
Posted
技术标签:
【中文标题】为啥使用 InheritedWidget 而我们可以使用 Broadcast Streams | StreamBuilder 和静态变量【英文标题】:Why use InheritedWidget while we can use Broadcast Streams | StreamBuilder and Static Variables [closed]为什么使用 InheritedWidget 而我们可以使用 Broadcast Streams | StreamBuilder 和静态变量 【发布时间】:2018-10-02 03:39:24 【问题描述】:为什么要使用 InheritedWidget 而我们可以使用广播流 | StreamBuilder 和静态变量?
虽然我们可以拥有一个简单而干净的架构,但我们为什么还要为 redux、作用域模型等而烦恼?
【问题讨论】:
【参考方案1】:Streams/Sink 绝对是存储状态的绝佳选择。有一些现有的架构,例如 BLoC 使用它们很多。
但是,Streams 也不能完全取代 InheritedWidget
。
InheritedWidget
具有很酷的能力,可以覆盖它的内容仅用于屏幕的一部分。
一个很酷的应用是Theme
。
一般来说,Streams
存储业务逻辑很酷。但是当你需要存储 UI 逻辑时,InheritedWidgets
占了上风。
【讨论】:
谢谢,我不是在找替代品,我在找一个简单干净的架构 当我使用 StreamBuilder 时,我实际上只覆盖了屏幕一部分的内容,我错了吗? 你错了。InheritedWidget
将信息传递给它的孩子。虽然流在小部件内部。所以在InheritedWidget
的情况下,其他小部件可能会产生影响。虽然使用流,但它们不能
流不在小部件内部,流是广播的并且对应用程序是全局的。不需要向下传递任何东西,只需将状态存储在全局/静态变量中
但是你们共享同一个流。当您实例化多个继承的小部件时。试着用流重现Theme
,你会很容易理解以上是关于为啥使用 InheritedWidget 而我们可以使用 Broadcast Streams | StreamBuilder 和静态变量的主要内容,如果未能解决你的问题,请参考以下文章