颤振提供者changenotifierprovider问题

时间:2020-01-23 17:00:02

标签: flutter dart flutter-provider

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:6)

provider package documentation(一直向下):

提供者: 提供程序的最基本形式。无论值是多少,它都会获取一个值并将其公开。

ListenableProvider: 侦听对象的特定提供程序。每当调用侦听器时,ListenableProvider都会侦听该对象并要求依赖于该对象的小部件进行重建。

ChangeNotifierProvider: 用于ChangeNotifier的ListenableProvider的规范。必要时它将自动调用ChangeNotifier.dispose。

因此,@Ajax.ActionLink(i.ToString(), "ActivityManagementTwo", "CallCenter", new AjaxOptions { UpdateTargetId = "activitiesForPartial" }, new { @class = i == Model.PagingInfo.CurrentPage ? "paginateRyan active" : "paginateRyan" }) ChangeNotifierProvider的一种特定类型,它将在更新该对象时侦听该对象并重建其依赖的小部件。另外,它会在需要时自动调用Provider方法。

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

答案 1 :(得分:3)

提供商

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

ChangeNotifierProvider

ChangeNotifierProvider,它是ListenableProvider的{​​{1}}的子类。它侦听模型对象中的更改。每当调用ChangeNotifier时,它都会重建依赖项窗口小部件。