提供程序与InheritedWidget

时间:2019-07-23 06:22:32

标签: flutter flutter-provider

是我错了吗,还是我们只想将值传递到Widget树下,Provider只是使用InheritedWidget方法的dispose吗?

2 个答案:

答案 0 :(得分:2)

是的。提供程序确实主要是基于Inheritedwidgets的功能。

如果您想自己做,那就很好。但是您很快就会意识到,没有提供者,您将有数百条无用的重复行。

Provider基本上采用InheritedWidgets的逻辑,但是将样板减小到严格的最低限度。

答案 1 :(得分:1)

Provider不是必须的,但应该。

首先,它得到flexible-powerful enough for almost every state-management的正式支持。

总结一下InheritedWidget with dispose可能是不正确的,因为Provider有太多不同的用例,并且继承了一些其他地方可能找不到的优化。

例如,它可以很好地处理dispose等情况下的automated providers方法,因此,最好不要像使用dispose parameter那样缩小效率,它还可以处理一些隐式处理。

另一个示例,如果您在大型应用程序中使用InheritedWidget,则build方法将始终执行整个程序。但是使用Provider,您将拥有Consumer Widget,它可以非常具体地控制build方法的特定块,因此您可以提高效率。因此,最后,尤其是在大型项目中,您将看到使用Provider的巨大好处。

问题在于,因为Flutter最初的意图是UI Framework,默认情况下,我们没有足够灵活,功能强大的状态管理解决方案。

最后,由于您需要针对不同项目的不同状态管理解决方案,因此一种适用于所有人的方案是无价之宝。