[英]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 包文檔確實說明了以下內容:
使用提供者的創建/更新回調時,值得注意的是,默認情況下會延遲調用此回調。 這意味着,在該值至少被請求一次之前,不會調用創建/更新回調。
如果是這種情況,那么解決方案是添加值為 false 的 lazy 參數。 像這樣:
ChangeNotifierProvider(create: (_) => NotificationManager(), lazy: false)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.