【问题标题】:flutter provider changenotifierprovider question颤振提供者 changenotifierprovider 问题
【发布时间】:2020-05-10 00:38:24
【问题描述】:

我在flutter的网站上看下面的代码:

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

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

谢谢!

【问题讨论】:

    标签: flutter dart flutter-provider


    【解决方案1】:

    provider package documentation(一路向下):

    提供者: 最基本的提供者形式。它接受一个值并将其公开,无论该值是什么。

    ListenableProvider: Listenable 对象的特定提供程序。 ListenableProvider 将侦听该对象,并在调用侦听器时要求依赖它的小部件进行重建。

    ChangeNotifierProvider: ChangeNotifier 的 ListenableProvider 规范。它会在需要时自动调用 ChangeNotifier.dispose。

    所以,ChangeNotifierProviderProvider 的一种特定类型,它会在该对象更新时侦听该对象并重建其依赖的小部件。另外,它会在需要时自动调用dispose方法。

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

    【讨论】:

    • 谢谢@Naslausky。没看到
    【解决方案2】:

    提供者

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

    ChangeNotifierProvider

    ChangeNotifierProvider,ListenableProvider 的子类,为 ChangeNotifier 制作。它监听模型对象的变化。每当调用 ChangeNotifier.notifyListeners 时,它都会重新构建依赖项小部件。

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2021-06-18
      • 2019-12-06
      • 2019-12-08
      • 2022-01-15
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 2020-12-24
      相关资源
      最近更新 更多