Flutter

Flutter 中如何将Callback 转为Future

2021-11-04  本文已影响0人  哦呵呵y
  Future<void> callback(ValueChanged<String> block) async {
    await Future.delayed(const Duration(seconds: 5));
    block("value");
  }

    // 调用
    callback((value) {
      print(value);
    });

在上面的代码中,由于函数callback将返回值通过block回调给外部,所以外部无法使用 await 拿到返回值。
如果在不想修改callback函数的前提下,想要通过await的方式拿到返回值,可以通过以下方法实现

  Future<String> wrapCallBack() {

    Completer<String> c = Completer();
    callback((value) {
      c.complete(value);
    });

    return c.future;
  }

// 调用
    var res = await wrapCallBack();
    Log.v(res);

上一篇 下一篇

猜你喜欢

热点阅读