我是Flutter的新手。我正在调用async
函数以从服务器获取数据。在我的代码Navigator.push()
中,必须在异步onEdit()
函数完成之后执行。但是对我来说,Navigator.push()
是在onEdit()
完成之前执行的。
代码:
void onEdit()async {
value= await getJson();
print(value);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Color.fromRGBO(33, 64, 95, 1.0),
leading: Icon(Icons.chevron_left),
actions: <Widget>[
FlatButton(
onPressed: (){
onEdit();
Navigator.push(context, MaterialPageRoute(builder: (context) => new Case(value)) );
},
child: Text(
"Edit",
style: TextStyle(color: Colors.white),
))
],
),
答案 0 :(得分:1)
只需使用onEdit
关键字调用await
函数即可。
Future<void> onEdit() async {
value = await getJson();
print(value);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Color.fromRGBO(33, 64, 95, 1.0),
leading: Icon(Icons.chevron_left),
actions: <Widget>[
FlatButton(
onPressed: () async {
await onEdit();
Navigator.push(context, MaterialPageRoute(builder: (context) => new Case(value)) );
},
child: Text(
"Edit",
style: TextStyle(color: Colors.white),
)
)
],
),
);
}