美文网首页
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 与 async await 的区别

    1、Flutter future 与 async await 的区别/异同 Flutter future 与 as...

  • Flutter--Future原理

    Flutter--Future 什么是Future? 简单来说future就是一个Future对象,当执行r...

  • Flutter--Future原理

    Flutter--Future 什么是Future? 简单来说future就是一个Future对象,当执行r...

  • Future--Demo

    创建Future (){}为Future的回调例如: Flutter相关回调函数 future中的函数: then...

  • Flutter - Future

    不废话认真看代码 ``` int main(){ test1(); test4 () ; } test1(){ ...

  • flutter Future

    Future then(FutureOr onValue(T value), {Function...

  • flutter Future

    在flutter中经常会用到异步任务,dart中异步任务异步处理是用Future来处理,那么如何实现用Future...

  • flutter 中的Future方法读取踩的小坑

    flutter dart 语法中 Future其实和js中的Promse 原理是一样的 Future 声明的函数...

  • Flutter 之 Future

    Future 源码说明 我们来看看Future的源码说明文档 我们重点看看then函数的文档说明: then注册在...

  • Flutter Future 详解

    语雀 什么是 Future Future是Dart中提供的一个抽象类、泛型类,它用于封装一段在将来会被执行的代码逻...

网友评论

      本文标题:flutter Future

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