Flutter 颤振多提供程序类构造函数问题
我正在使用颤振创建一个购物应用程序,并使用提供商包进行状态管理。一切都很好,只是个问题。我像这样声明我的ChangeNotifierProvidersFlutter 颤振多提供程序类构造函数问题,flutter,provider,Flutter,Provider,我正在使用颤振创建一个购物应用程序,并使用提供商包进行状态管理。一切都很好,只是个问题。我像这样声明我的ChangeNotifierProviders void main() { runApp(MultiProvider( providers: <SingleChildWidget>[ ChangeNotifierProvider(create: (_) => AuthStateManager.instance()), ChangeNotif
void main() {
runApp(MultiProvider(
providers: <SingleChildWidget>[
ChangeNotifierProvider(create: (_) => AuthStateManager.instance()),
ChangeNotifierProvider(create: (_) => CartManager()),
ChangeNotifierProvider(create: (_) => LocationManager()),
ChangeNotifierProvider(create: (_) => BottomNavigationManager()),
ChangeNotifierProvider(create: (_) => NotificationManager()),
],
child: EvendorApp(),
));
}
现在这些在状态管理方面运行良好,但是我想在它们的构造上执行一些代码,例如,我想在它们的构造函数中运行代码,但是
AuthStateManager.instance()
,BottomNavigationManager()
和CartManager()
在开始时执行代码,但其他LocationManager()
和NotificationManager()
没有执行代码,我不知道为什么会发生这种情况。我对所有类都做了相同的操作。我不确定这是否是答案,因为我从未使用过它,但提供程序包文档确实说明了以下内容:
当使用提供者的create/update回调时,值得注意的是,默认情况下会延迟调用此回调。这意味着,在至少请求一次该值之前,不会调用create/update回调
如果是这种情况,那么解决方案是添加值为false的lazy参数。大概是这样的:
ChangeNotifierProvider(create:(\u)=>NotificationManager(),lazy:false)
您是否尝试过在构建代码后运行代码,比如在应用程序的第一次启动时,EvendorApp?是的,这正在工作,但构造函数中的代码没有被执行。我只是想知道为什么那不起作用。那些不起作用的类会扩展其他类吗?
class NotificationManager with ChangeNotifier {
NotificationManager() {
print("Notification manager created");
}
}