有人可以解释使用Provider软件包和使用ValueNofifier之间的区别吗?
现在,我在我的应用中使用ValueNotifier和ValueListenableBuilder,我发现此方法与使用提供商和消费者之间有很多相似之处。两者都有侦听器,可以使用提供的最新数据重建小部件,并且都使用ChangeNotifier和notifyListeners。
那有什么区别?什么时候应该选择其中一个而不是另一个?
谢谢
答案 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,
)
基本上,这是将业务逻辑与常规应用程序逻辑分开的一种好方法。