我想根据异步调用的返回进行导航。
首先,我在Future Builder快照中使用了Navigator.push。
FutureBuilder<String> fB = FutureBuilder<String>(
future: func1(),
builder: (context, snapshot) {
if (snapshot.hasData) {
Navigator.pushNamed(context, '/index');
} else if (snapshot.hasError)
return Text(snapshot.error.toString());
return CircularProgressIndicator();//
},
);
但是我有一个错误消息,那就是该小部件是在其父级之前构建的。
然后我尝试根据FutureBuilder的结果进行推送。
FutureBuilder<String> fB = FutureBuilder<String>(
future: func1(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text("sucess");
} else if (snapshot.hasError)
return Text(snapshot.error.toString());
return CircularProgressIndicator();
},
);
if(test)Scaffold.of(context).showSnackBar(new SnackBar(content:fB)); else Navigator.pushNamed(context,'/ index');
我怎么知道提供推送是否成功(测试是什么)?
答案 0 :(得分:0)
它与.then()方法一起使用。
FutureBuilder<String> fB = FutureBuilder<String>(
future: func1().then((response) {
Navigator.pushNamed(context, '/index');
return response;
}),
builder: (context, snapshot) {
if (snapshot.hasData) {
return null;
} else if (snapshot.hasError)
return Text(snapshot.error.toString());
return CircularProgressIndicator();
},
);