如何使用嵌套的FutureBuilders并确保一个接一个地调用一个未来?

问题描述 投票:0回答:1

为了避免我的FutureBuilder被一次又一次地调用(参见this),我有一个在initState中调用我的未来的习惯,它一直很好,直到我不得不使用嵌套的。

基本上我希望第二个未来只有在第一个的connectionState成为done之后才被调用。有帮助吗?

这是我的代码,以进一步解释 -

FutureBuilder(
  future: _future1,
  builder: (BuildContext context, AsyncSnapshot snapshot) {
    return snapshot.connectionState != ConnectionState.done
        ? CircularProgressIndicator()
        : snapshot.data != 200
            ? SomeWidget()
            : FutureBuilder(
                future: _future2,
                builder: (BuildContext context, AsyncSnapshot snapshot) {
                  return snapshot?.connectionState == ConnectionState.done
                      ? Text('')
                      : CircularProgressIndicator();
                });
  },
);

所以基本上,如果从_future2收到的数据不是200,我根本不希望_future1被调用。换句话说,我想根据_future2的结果决定是否调用_future1

asynchronous flutter future
1个回答
0
投票

initState,我这样做 -

_future1 = func.then(checkCode);

然后我根据我收到的代码编写了另一个函数来决定我的小部件 -

checkCode(int statusCode) {
if (statusCode == 200) {
  _future2Func();
  widgetToNavigate = Text('');
} else {
  widgetToNavigate = SomeWidget();
}}

最后,我的构建代码看起来像这样 -

Widget build(BuildContext context) {
return FutureBuilder(
  future: _future1,
  builder: (BuildContext context, AsyncSnapshot snapshot) {
    return snapshot.connectionState != ConnectionState.done
        ? CircularProgressIndicator()
        : widgetToNavigate;
  },
);}
© www.soinside.com 2019 - 2024. All rights reserved.