Asynchronous 如何根据异步调用的结果使用Navigator?
我希望根据异步调用的返回进行导航 首先,我在未来的构建器快照中使用了Navigator.pushAsynchronous 如何根据异步调用的结果使用Navigator?,asynchronous,flutter,dart,Asynchronous,Flutter,Dart,我希望根据异步调用的返回进行导航 首先,我在未来的构建器快照中使用了Navigator.push FutureBuilder<String> fB = FutureBuilder<String>( future: func1(), builder: (context, snapshot) { if (snapshot.hasData) { Navigator.pushNamed(context, '/index'); } else
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 fB=FutureBuilder(
future:func1(),
生成器:(上下文,快照){
if(snapshot.hasData){
pushNamed(上下文“/index”);
}else if(snapshot.hasrerror)
返回文本(snapshot.error.toString());
返回循环ProgressIndicator()//
},
);
但是我有一个错误告诉他小部件是在他父母之前构建的
然后我试着根据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();
},
);
FutureBuilder fB=FutureBuilder(
future:func1(),
生成器:(上下文,快照){
if(snapshot.hasData){
返回文本(“成功”);
}else if(snapshot.hasrerror)
返回文本(snapshot.error.toString());
返回循环ProgressIndicator();
},
);
if(测试)Scaffold.of(context.showSnackBar(新SnackBar(内容:fB));
else Navigator.pushNamed(上下文“/index”)
我如何知道提供推送是否成功(测试是什么?它与.then()方法一起工作
FutureBuilder fB=FutureBuilder(
future:func1()。然后((响应){
pushNamed(上下文“/index”);
返回响应;
}),
生成器:(上下文,快照){
if(snapshot.hasData){
返回null;
}else if(snapshot.hasrerror)
返回文本(snapshot.error.toString());
返回循环ProgressIndicator();
},
);
或使用WidgetsBinding
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();
},
);