有人可以解释使用Provider包和使用ValueNofifier之间的区别吗?
\n现在我\xe2\x80\x99m在我的应用程序中使用ValueNotifier和ValueListenableBuilder,我发现这与使用提供者和消费者之间有很多相似之处。两者都有使用提供的最新数据重建小部件的侦听器,并且都使用 ChangeNotifier 和 notificationListeners。
\n那么它们有什么区别,什么时候我们应该选择其中一种而不是另一种呢?
\n谢谢
\n就我在应用程序中使用这两个东西的经验而言,主要区别在于
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)
这基本上是一种将业务逻辑与正常应用程序逻辑分开的巧妙方法。
| 归档时间: |
|
| 查看次数: |
4383 次 |
| 最近记录: |