Flutter 提供程序vs ValueNotifier颤振

Flutter 提供程序vs ValueNotifier颤振,flutter,provider,Flutter,Provider,有人能解释一下使用软件包和使用软件包的区别吗 现在我在我的应用程序中使用和,我看到这和使用提供商和消费者之间有很多相似之处。两者都有监听器,可以用提供的最新数据重建小部件,并且都使用ChangeNotifier和notifyListeners 那么区别是什么?我们什么时候应该选择其中一个而不是另一个 谢谢就我在应用程序中使用这两种东西的经验而言,主要区别在于 Provider可以在应用程序的任何部分提供更改,就像使用notifyListener()的任何位置一样,并且可以使用应用程序中的任何位置

有人能解释一下使用软件包和使用软件包的区别吗

现在我在我的应用程序中使用和,我看到这和使用提供商和消费者之间有很多相似之处。两者都有监听器,可以用提供的最新数据重建小部件,并且都使用ChangeNotifier和notifyListeners

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


谢谢

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

Provider
可以在应用程序的任何部分提供更改,就像使用
notifyListener()
的任何位置一样,并且可以使用应用程序中的任何位置进行访问。但是,在使用全局
ValueNotifier
时可能会出现错误,这是不推荐的。从技术上讲,当代码变大时,不会给您太多的bug跟踪控制

其他主要区别:

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

MultiProvider(
供应商:[
提供者(创建:(\u)=>Something()),
提供程序(创建:()=>SomethingElse()),
提供程序(创建:(\u)=>AnotherThing()),
],
孩子:一些小部件,
)

这基本上是一种将业务逻辑与普通应用程序逻辑分开的简洁方法。

我同意答案的第二部分,但对于第一部分,您可以使用全局ValueNotifier并在应用程序中的任何位置使用它。为什么它不被推荐?为什么提供者给了你一个更好的方法来做同样的事情?它给了你更多的控制权@Morez。就像您创建全局值并希望更改任何位置一样,当代码变大时,您可能不知道在何处更改了值,但当您有提供程序时,您实际上知道,因为您有一组类方法来处理使用
notifyListeners()
的更改。更有效地跟踪bug。在颤振中,使用
全局
通常不是一种好的做法。您可以阅读更多关于它的内容,因此是第一部分。谢谢您的回答
Provider(
  create: (_) => MyModel(),
  child: ...
)
MultiProvider(
  providers: [
    Provider<Something>(create: (_) => Something()),
    Provider<SomethingElse>(create: (_) => SomethingElse()),
    Provider<AnotherThing>(create: (_) => AnotherThing()),
  ],
  child: someWidget,
)