Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 使用通用BLoC提供程序和继承的小部件有什么区别?_Flutter_Difference_Concept - Fatal编程技术网

Flutter 使用通用BLoC提供程序和继承的小部件有什么区别?

Flutter 使用通用BLoC提供程序和继承的小部件有什么区别?,flutter,difference,concept,Flutter,Difference,Concept,使用通用BLoC提供程序和继承的小部件有什么区别?他们是一样的,做同样的事,还是完全不同 我理解,无论您在窗口小部件树中处于何种级别,这两种工具都可以访问数据 但是,如果您解释了它们的不同之处,我会非常高兴。它们的用途类似(将状态传递给小部件树下的小部件),但是在如何检索值和如何应用更改方面存在差异 在BLoC中,通过使用BlocBuilder根据当前BlocState构建小部件,并且向BlocProvider.of(context)添加事件以更改该值 使用InheritedWidget,您可以

使用通用BLoC提供程序和继承的小部件有什么区别?他们是一样的,做同样的事,还是完全不同

我理解,无论您在窗口小部件树中处于何种级别,这两种工具都可以访问数据
但是,如果您解释了它们的不同之处,我会非常高兴。它们的用途类似(将状态传递给小部件树下的小部件),但是在如何检索值和如何应用更改方面存在差异

在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)中的更新数据,或者什么???