美文网首页Flutter
Flutter 中如何将Callback 转为Future

Flutter 中如何将Callback 转为Future

作者: 哦呵呵y | 来源:发表于2021-11-04 10:53 被阅读0次
      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);
    
    

    相关文章

      网友评论

        本文标题:Flutter 中如何将Callback 转为Future

        本文链接:https://www.haomeiwen.com/subject/kvohzltx.html