有时候需要弹出弹窗等待用户选择某条件后再执行后续代码,可以用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");
},)