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