簡體   English   中英

Flutter:從沒有上下文的InheritedWidgets訪問數據?

[英]Flutter: Access data from InheritedWidgets without context?

我看到我可以在build()方法中訪問InheritedWidgets,如下所示: final inheritedWidget = ChronoApp.of(context); 但是如果我想在其他地方訪問它,比如在initState()中沒有上下文。 我該怎么做?

根據此文檔, context應該在initState使用context getter。

https://docs.flutter.io/flutter/widgets/State/context.html

在使用StatefulWidget.createState創建它們之前和調用initState之前,框架將State對象與BuildContext相關聯。

我發現為我工作的是獲取父上下文並在initState之后調用的didChangeDependencies()函數中使用它。 像這樣

@override
  // TODO: implement context
  BuildContext get context => super.context;

@override
  void didChangeDependencies() {
    bloc = LoginBlocProvider.of(context);
    bloc.isAuthenticated.listen((bool value) {
      setState(() {
        isLoading = false;
      });

      if (value) {
        Navigator.push(context, MaterialPageRoute(
          builder: (BuildContext context) => HomeScreen()
        ));
      }
    });
    super.didChangeDependencies();
  }

來自de didChangeDependencies()docs:

在initState之后也會立即調用此方法。 從此方法調用BuildContext.inheritFromWidgetOfExactType是安全的。

我仍然試圖完全理解這個功能,但這對我有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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