Flutter中的异常事件


我们在上一章回中介绍url_launcher包相关的内容,本章回中将介绍如何Flutter中的异步操作.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

异步操作是程序中不可缺少的内容,大部分面向对象语言和编程框架都提供了异步操作,一些三方公司也推出了异步库,比如我们在Android专栏中介绍的Rxjava库.
Flutter也提供了异步操作,实现异步操作会用到Future和Stream类,以及Dart语言中的async和await关键字。本章回中将介绍异步操作相关的用法。

2. 使用方法

2.1 async和awit配合使用

async关键字通常在方法名后面,表示该方法是异步方法。在方法体中使用await关键字修饰某个操作,表示等待该操作完成后再执行该操作后面的其它程序语句。稍后
我们将在示例代码中演示它们的用法。注意:这两个关键字必须配合在一起使用,不能单独使用。async关键字修饰的方法默认返回Future类型的对象。

2.2 Future类单独使用

Future类提供了很多静态方法来实现异步操作,比如延时操作,等待操作等,而且这些操作支持链式调用,使用起来十分方便。它和我们前面介绍的RxJava框架十分类
似,如果大家了解RxJava的话,很快就能上手Future类相关的操作。下面是常用的静态方法与功能:

  • wait方法:表示执行等待操作,等当前操作完成后才会去运行其它的操作;
  • delayed方法:表示延时执行某个任务,时间通过参数来指定;
  • then方法:表示接着执行某个操作,它通常位于wait方法后面;
  • catchError方法:如果执行异步操作过程中发生错误,那么会回调此方法;
  • whenComplete方法:异步操作执行完成后会回调此方法

3. 示例代码

//async和await关键字示例代码
_syncFun() async {
  await do one 
  do two //只有do noe操作完成后才执行该操作
}

//Future类示例代码
_syncLaunch() {
  print("func start");
  Future.wait([
    Future.delayed(Duration(seconds: 3),() {
      print("launch url");
      launchUrl(Uri.parse('https://pub.dev'));
    })
  ])
  .then((value) => print("then running"))
  .catchError((e){
    print("error: "+e.toString());
  })
  .whenComplete(() => print("complete running"));
  print("func end");
}

上面的代码中,async和await关键字的示例程序是伪代码,大家明白其中的运行过程就可以。Future操作的代码可以运行,下面是程序的运行结果,从运行结果中可以
看到,start和end很快就运行完成了,异步操作需要等待3秒后才可以运行,先是运行wait方法中加载url的操作,然后是then方法中的操作,最后是whenComplete
方法中的操作。因为整个运行过程没有发生异常,所以没有执行catchError方法中的程序。

flutter: func start
flutter: func end
flutter: launch url
flutter: then running
flutter: complete running

看官们,关于"Flutter中异步操作"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值