Flutter等待异步内容

311 阅读1分钟

有时候需要弹出弹窗等待用户选择某条件后再执行后续代码,可以用Completer类。

为了便于使用,封装了一个小工具 

import 'dart:async';

class CompleterExt {
  static Future<T> awaitFor<T>(Function(Function(T)) run) {
    var c = Completer<T>();

    run((r) => c.complete(r));

    return c.future;
  }
}

使用如下:

UIButton(child: Text("打乒"), onTap: () async {
        bool r = await CompleterExt.awaitFor<bool>((run) {
          ActionCard.selected(context, Text("data").padding(padding: EdgeInsets.all(30)), (r) => run(r));
        });
        print("结果:$r");
      },)