我的addSteps函数需要访问上下文。我有一个存储库对象,存储在这里。
Future<int> _addSteps() async {
repository = RepositoryProvider.of<lo.Repository>(context);
...
}
将来的_addStepsFuture
是在didChangeDependencies
中创建的。
didChangeDependencies() {
addStepsFuture = _addSteps();
}
尽管稍后会在Build调用中获取上下文。
FutureBuilder<int>(
future: _addStepsFuture,
)
在调用BuildContext
之前,Build
不可用。
有没有办法解决这个问题?谢谢。
答案 0 :(得分:1)
由于您的context
调用只是在后台使用RepositoryProvider.of
,因此您可以在didChangeDependencies中访问inheritFromWidgetOfExactType
。
但是除非您出于其他原因使用didChangeDependencies
生命周期挂钩,否则还可以尝试:
class Foo extends StatelessWidget {
@override
Widget build(BuildContext context) {
final repository = RepositoryProvider.of<lo.Repository>(context);
return FutureBuilder(
future: _addSteps(repository),
builder: (context, snapshot) {
return Placeholder();
},
);
}
Future _addSteps(lo.Repository repository) async {
/* ... */
}
}
或
class Foo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _addSteps(context),
builder: (context, snapshot) {
return Placeholder();
},
);
}
Future _addSteps(BuildContext context) async {
final repository = RepositoryProvider.of<lo.Repository>(context);
/* ... */
}
}
让我知道我是否误解了问题