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

问题描述 投票:0回答:1

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

我知道,无论您在小部件树中的级别如何,两者都可以访问数据但是如果您能解释其中的区别,我将非常高兴

flutter difference concept
1个回答
0
投票

它们具有类似的目的(将状态传递给小部件树下方的小部件),但是在获取值和应用更改方面存在差异。

在BLoC中,您可以通过使用BlocBuilder<MyBloc, MyBlocState>检索当前状态,并在add中使用BlocProvider.of<MyBloc>(context)事件以更改该值。

使用InheritedWidgets,您可以通过context.inheritFromWidgetOfExactType(MyInheritedWidget)获取当前状态。但是InheritedWidget是不可变的(字段标记为final)。您只能通过重建整个窗口小部件来更改状态。这就是为什么InheritedWidget主要用于事物,而很少更改的原因:ThemeMediaQueryLocalization

© www.soinside.com 2019 - 2024. All rights reserved.