flutter provider changenotifierprovider 问题

flutter provider changenotifierprovider question

我在flutter的网站上查看了以下代码:

void main() {
  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(create: (context) => CartModel()),
        Provider(create: (context) => SomeOtherClass()),
      ],
      child: MyApp(),
    ),
  );
}

我想知道,Provider 和 ChangeNotifierProvider 有什么区别?

谢谢!

provider package documentation(一直往下):

Provider: The most basic form of provider. It takes a value and exposes it, whatever the value is.

ListenableProvider: A specific provider for Listenable object. ListenableProvider will listen to the object and ask widgets which depend on it to rebuild whenever the listener is called.

ChangeNotifierProvider: A specification of ListenableProvider for ChangeNotifier. It will automatically call ChangeNotifier.dispose when needed.

因此,ChangeNotifierProvider 是一种特定类型的 Provider,它将侦听该对象并在更新此对象时重建其依赖的小部件。此外,它会在需要时自动调用 dispose 方法。

Provider是通用提供程序,没有任何更复杂的功能,非常像优化的 Inherited Widget

提供商

提供者是最基本的提供者小部件类型。您可以使用它向小部件树中的任何位置提供值(通常是数据模型对象)。每当值更改时,它都不会重建小部件树。它只是将模型传递给小部件树中的后代小部件。

ChangeNotifierProvider

ChangeNotifierProvider,ListenableProvider 的一个子类,用于 ChangeNotifier。它监听模型对象的变化。每当调用 ChangeNotifier.notifyListeners 时,它都会重建依赖小部件。