Flutter MultiProvider 类 构造函数问题
Flutter MultiProvider Classes constructors issue
我正在使用 flutter 创建一个购物应用程序,并使用 Provider 包进行状态管理。一切都非常好,只是一个问题。我正在这样声明我的 ChangeNotifierProviders。
void main() {
runApp(MultiProvider(
providers: <SingleChildWidget>[
ChangeNotifierProvider(create: (_) => AuthStateManager.instance()),
ChangeNotifierProvider(create: (_) => CartManager()),
ChangeNotifierProvider(create: (_) => LocationManager()),
ChangeNotifierProvider(create: (_) => BottomNavigationManager()),
ChangeNotifierProvider(create: (_) => NotificationManager()),
],
child: EvendorApp(),
));
}
全部类都喜欢
class NotificationManager with ChangeNotifier {
NotificationManager() {
print("Notification manager created");
}
}
现在这些在状态管理方面工作得很好,但我想在它们的构造上执行一些代码,例如我想 运行 代码在他们的构造函数中,但是 AuthStateManager.instance()
, BottomNavigationManager()
和 CartManager()
在开始时执行代码,但其他 LocationManager()
和 NotificationManager()
没有执行代码,我不知道为什么会这样。我对所有 类.
做同样的事情
我不确定这是否是答案,因为我从未使用过它,但 Provider 包文档确实说明了以下内容:
When using the create/update callback of a provider, it is worth noting that this callback is called lazily by default. What this means is, until the value is requested at least once, the create/update callbacks won't be called.
如果是这种情况,那么解决方法是添加值为 false 的惰性参数。像这样:
ChangeNotifierProvider(create: (_) => NotificationManager(), lazy: false)
我正在使用 flutter 创建一个购物应用程序,并使用 Provider 包进行状态管理。一切都非常好,只是一个问题。我正在这样声明我的 ChangeNotifierProviders。
void main() {
runApp(MultiProvider(
providers: <SingleChildWidget>[
ChangeNotifierProvider(create: (_) => AuthStateManager.instance()),
ChangeNotifierProvider(create: (_) => CartManager()),
ChangeNotifierProvider(create: (_) => LocationManager()),
ChangeNotifierProvider(create: (_) => BottomNavigationManager()),
ChangeNotifierProvider(create: (_) => NotificationManager()),
],
child: EvendorApp(),
));
}
全部类都喜欢
class NotificationManager with ChangeNotifier {
NotificationManager() {
print("Notification manager created");
}
}
现在这些在状态管理方面工作得很好,但我想在它们的构造上执行一些代码,例如我想 运行 代码在他们的构造函数中,但是 AuthStateManager.instance()
, BottomNavigationManager()
和 CartManager()
在开始时执行代码,但其他 LocationManager()
和 NotificationManager()
没有执行代码,我不知道为什么会这样。我对所有 类.
我不确定这是否是答案,因为我从未使用过它,但 Provider 包文档确实说明了以下内容:
When using the create/update callback of a provider, it is worth noting that this callback is called lazily by default. What this means is, until the value is requested at least once, the create/update callbacks won't be called.
如果是这种情况,那么解决方法是添加值为 false 的惰性参数。像这样:
ChangeNotifierProvider(create: (_) => NotificationManager(), lazy: false)