Jus*_*s10 6 dart flutter inherited-widget
我看到我可以build()像这样在方法内部访问InheritedWidgets :final inheritedWidget = ChronoApp.of(context);但是如果我想在其他地方访问它(例如在initState()没有上下文的情况下)怎么办。我该怎么做?
根据此文档context,initState使用contextgetter时应该可用。
https://docs.flutter.io/flutter/widgets/State/context.html
在使用StatefulWidget.createState创建状态对象之后,在调用initState之前,框架将State对象与BuildContext关联。
我发现对我didChangeDependencies()有用的是获取父上下文并在initState之后调用的函数中使用它。像这样
@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();
}
Run Code Online (Sandbox Code Playgroud)
来自de didChangeDependencies()文档:
在initState之后也立即调用此方法。从此方法调用BuildContext.inheritFromWidgetOfExactType是安全的。
我仍在尝试完全了解此功能,但这对我有用
| 归档时间: |
|
| 查看次数: |
3503 次 |
| 最近记录: |