提供程序与ValueNotifier波动

时间:2020-09-12 10:17:15

标签: flutter provider

有人可以解释使用Provider软件包和使用ValueNofifier之间的区别吗?

现在,我在我的应用中使用ValueNotifierValueListenableBuilder,我发现此方法与使用提供商和消费者之间有很多相似之处。两者都有侦听器,可以使用提供的最新数据重建小部件,并且都使用ChangeNotifier和notifyListeners。

那有什么区别?什么时候应该选择其中一个而不是另一个?

谢谢

1 个答案:

答案 0 :(得分:1)

就我在使用应用程序中的两种功能方面的经验而言,主要的区别是

Provider可以在应用程序的任何部分进行更改,就像使用notifyListener()的任何地方一样,并且可以在应用程序中的任何位置进行访问。但是,使用全局ValueNotifier 可能会导致错误,因此不建议这样做。从技术上讲,当代码变大时,您无法对错误跟踪进行太多控制。

Provider(
  create: (_) => MyModel(),
  child: ...
)

其他主要区别:

Provider使您能够使用多个Providers ,并且只能存储在单个Provider数组中,但是在ValueNotifier中,您受到很大限制一次使用一个值。要使用多个ValueNotifier,必须创建多个ValueNotifier,然后每次都将其丢弃。

MultiProvider(
  providers: [
    Provider<Something>(create: (_) => Something()),
    Provider<SomethingElse>(create: (_) => SomethingElse()),
    Provider<AnotherThing>(create: (_) => AnotherThing()),
  ],
  child: someWidget,
)

基本上,这是将业务逻辑与常规应用程序逻辑分开的一种好方法。