美文网首页
flutter Future

flutter Future

作者: hypercode | 来源:发表于2020-03-30 17:56 被阅读0次

    在flutter中经常会用到异步任务,dart中异步任务异步处理是用Future来处理,那么如何实现用Future来处理一个异步操作呢,网上的Future教程、原理都是说说原理,但是没有什么干货,没有教你如何去用。今天看了下源码,终于知道如何去使用Future了。其实和javaScript的promise很像,但是promise的参数函数的参数提供了resolve,reject方法去操控状态,
    那么Future难道就没有吗?原来dart:async提供了Completer类,通过实例这个类生成Future,同时在用这个实例去控制生成的future的成功或者失败的状态。代码如下:

    
    Future openImagePicker () {
        Complete completer = new Completer();
       
        // ImagePicker 是一个图片选择插件
        ImagePicker.singlePicker(
           context, 
           singleCallback: (data) {
             completer.complete(data);
           },
           failCallback:(err) {
             completer.catchError(err); 
           }
        );
         
        return completer.future;
    }
    

    // 使用

    openImagePicker().then((data) {}).catchError((err){});
    

    返回completer生成的future,通过completer.complete方法去控制completer.future的成功状态,通过completer.catchError去控制completer.future的失败状态。
    completer.complete和completer.catchError方法的参数就是future的返回值。

    completer.complete就相当于promise的resolve,completer.catchError相当于promise中的reject()

    通过Completer可以得心应手的控制Future的状态。

    相关文章

      网友评论

          本文标题:flutter Future

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