返回未来后如何设置提供商

时间:2019-09-19 15:47:25

标签: flutter dart

我正在尝试在发送Future的数据之后设置提供程序,以便在将来发送的数据之后返回窗口小部件时,该窗口小部件可以从提供程序获取数据。

我尝试做以下两件事:

我尝试过的事情:

  • ListWidget的构建方法中将提供程序设置为将侦听器设置为false,但会收到错误消息:
  在构建过程中调用

setState()或markNeedsBuild()。

  • ListWidget更改为状态窗口小部件,然后在initState方法中设置listManager提供程序,但由于我无权在initState方法中访问context,因此无法设置。

代码如下:

class TopContent extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder<List<ListItem>>(
      future: getAll(),
      builder: (context, snapshot) {
        if (snapshot.hasError) return Text('This is an error');
        else if (snapshot.hasData) return ListWidget();

        return Text("loading");
      },
    );
  }
}

class ListWidget extends StatelessWidget {
  // Provider has to be set to the Future data at this point in the app
  @override
  Widget build(BuildContext context) {
    final listManager = Provider.of<ListManager>(context);
    // Do something with listManager

    return Text("has Text man");
  }
}

Future<List<ListItem>> getAll() async {
 ... http Request
}

请让我知道我的方法是否错误,正确的解决方法是什么。

0 个答案:

没有答案