Provider 与 ValueNotifier Flutter

Mor*_*rez 12 provider flutter

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

\n

现在我\xe2\x80\x99m在我的应用程序中使用ValueNotifierValueListenableBuilder,我发现这与使用提供者和消费者之间有很多相似之处。两者都有使用提供的最新数据重建小部件的侦听器,并且都使用 ChangeNotifier 和 notificationListeners。

\n

那么它们有什么区别,什么时候我们应该选择其中一种而不是另一种呢?

\n

谢谢

\n

Alo*_*lok 8

就我在应用程序中使用这两个东西的经验而言,主要区别在于

Provider可以在应用程序的任何部分提供更改,例如使用 的任何位置notifyListener(),并且可以使用应用程序中的任何位置进行访问。但是,使用globalValueNotifier可能会出现 bug ,不建议这样做。从技术上讲,当代码变大时,您无法对错误跟踪进行太多控制。

Provider(
  create: (_) => MyModel(),
  child: ...
)
Run Code Online (Sandbox Code Playgroud)

其他主要区别:

Provider使您能够使用多个提供程序,并且只能存储在单个提供程序数组中,但是,在 中ValueNotifier,您一次只能使用一个值。要使用多个 ValueNotifier,您必须创建多个 ValueNotifier,然后每次都将其丢弃。

MultiProvider(
  providers: [
    Provider<Something>(create: (_) => Something()),
    Provider<SomethingElse>(create: (_) => SomethingElse()),
    Provider<AnotherThing>(create: (_) => AnotherThing()),
  ],
  child: someWidget,
)
Run Code Online (Sandbox Code Playgroud)

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