我正在flutter的网站上查看以下代码:
void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (context) => CartModel()),
Provider(create: (context) => SomeOtherClass()),
],
child: MyApp(),
),
);
}
我想知道Provider和ChangeNotifierProvider有什么区别?
谢谢!
答案 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
时,它都会重建依赖项窗口小部件。