等待另一个异步功能完成

时间:2018-10-07 17:33:21

标签: dart flutter

我是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),
              ))
        ],
      ),

1 个答案:

答案 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),
          )
        )
      ],
    ),
  );
}