簡體   English   中英

Flutter MultiProvider Classes 構造函數問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM