未来的构建者-需要先构建上下文

我的addSteps函数需要访问上下文。我有一个存储库对象,存储在这里。

 Future<int> _addSteps() async {
     repository = RepositoryProvider.of<lo.Repository>(context);
     ...
 }

将来的_addStepsFuture是在didChangeDependencies中创建的。

didChangeDependencies() {
     addStepsFuture = _addSteps();
}

尽管稍后会在Build调用中获取上下文。

FutureBuilder<int>(
          future: _addStepsFuture,)

在调用BuildContext之前,Build不可用。

有没有办法解决这个问题?谢谢。

hanyudeng13105 回答:未来的构建者-需要先构建上下文

由于您的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),);
  }

  Future _addSteps(BuildContext context) async {
    final repository = RepositoryProvider.of<lo.Repository>(context);
    /* ... */
  }
}

让我知道我是否误解了问题

本文链接:https://www.f2er.com/2983837.html

大家都在问