Kee*_*ani 6 asynchronous future flutter
为了避免FutureBuilder一次又一次地被调用(请参阅此),我有调用我的 future 的习惯,initState并且它一直工作得很好,直到我不得不使用嵌套的 future。
connectionState基本上我希望第二个 future 仅在第一个 future成为 后才被调用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();
});
},
);
Run Code Online (Sandbox Code Playgroud)
_future2所以基本上,如果收到的数据不是 200 ,我根本不想被调用_future1。换句话说,我想_future2根据 的结果决定是否应该被调用_future1。
在 中initState,我这样做 -
_future1 = func.then(checkCode);
Run Code Online (Sandbox Code Playgroud)
然后我编写了另一个函数来根据我收到的代码决定我的小部件 -
checkCode(int statusCode) {
if (statusCode == 200) {
_future2Func();
widgetToNavigate = Text('');
} else {
widgetToNavigate = SomeWidget();
}}
Run Code Online (Sandbox Code Playgroud)
最后,我的构建代码如下所示 -
Widget build(BuildContext context) {
return FutureBuilder(
future: _future1,
builder: (BuildContext context, AsyncSnapshot snapshot) {
return snapshot.connectionState != ConnectionState.done
? CircularProgressIndicator()
: widgetToNavigate;
},
);}
Run Code Online (Sandbox Code Playgroud)