Flutter 使用通用BLoC提供程序和继承的小部件有什么区别?
使用通用BLoC提供程序和继承的小部件有什么区别?他们是一样的,做同样的事,还是完全不同 我理解,无论您在窗口小部件树中处于何种级别,这两种工具都可以访问数据Flutter 使用通用BLoC提供程序和继承的小部件有什么区别?,flutter,difference,concept,Flutter,Difference,Concept,使用通用BLoC提供程序和继承的小部件有什么区别?他们是一样的,做同样的事,还是完全不同 我理解,无论您在窗口小部件树中处于何种级别,这两种工具都可以访问数据 但是,如果您解释了它们的不同之处,我会非常高兴。它们的用途类似(将状态传递给小部件树下的小部件),但是在如何检索值和如何应用更改方面存在差异 在BLoC中,通过使用BlocBuilder根据当前BlocState构建小部件,并且向BlocProvider.of(context)添加事件以更改该值 使用InheritedWidget,您可以
但是,如果您解释了它们的不同之处,我会非常高兴。它们的用途类似(将状态传递给小部件树下的小部件),但是在如何检索值和如何应用更改方面存在差异 在BLoC中,通过使用
BlocBuilder
根据当前BlocState构建小部件,并且向BlocProvider.of(context)
添加事件以更改该值
使用InheritedWidget,您可以通过context.inheritFromWidgetOfExactType(MyInheritedWidget)
获取当前状态。但是InheritedWidget
s是不可变的(字段标记为final
)。您只能通过重建整个小部件来更改状态。这就是为什么InheritedWidget
主要用于一些很少改变的东西:主题
,MediaQuery
,本地化
,等等。我想得到更多,假设我们有一个包含子widget的bloc和一个在数据更新时包含子widget的Inherited widget,发生了什么?你的意思是inhert widget child将重建它,但是bloc widget只会重建child,如果它的子类文本(UpdateData)中的更新数据,或者什么???