第七十七回:Flutter中的异步操作

这篇具有很好参考价值的文章主要介绍了第七十七回:Flutter中的异步操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


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

概念介绍

异步操作是程序中不可缺少的内容,大部分面向对象语言和编程框架都提供了异步操作,一些三方公司也推出了异步库,比如我们在Android专栏中介绍的Rxjava库.

Flutter也提供了异步操作,实现异步操作会用到FutureStream类,以及Dart语言中的asyncawait关键字。本章回中将介绍异步操作相关的用法。

使用方法

async和awit配合使用

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

Future类单独使用

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

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

示例代码

//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");
}

上面的代码中,asyncawait关键字的示例程序是伪代码,大家明白其中的运行过程就可以。

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中异步操作"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!文章来源地址https://www.toymoban.com/news/detail-526629.html

到了这里,关于第七十七回:Flutter中的异步操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OSG三维渲染引擎编程学习之七十七:“第七章:OSG场景图形交互” 之 “7.9 场景漫游”

    目录 第七章 OSG场景图形交互 7.9 场景漫游 7.9.1 场景漫游描述 7.9.2 自定义场景漫游器

    2024年02月07日
    浏览(59)
  • 第九十七回 自定义评分条

    我们在上一章回中介绍了\\\"网络综合示例\\\"相关的内容,本章回中将介绍如何 自定义评分条 .闲话休提,让我们一起Talk Flutter吧。 我们在本章回中介绍的评分条就是包含多个星星形状的评分条,常见于网上购物后的评价中,相信大家都见过。Flutter没有提供这样的组件,因此我们

    2024年02月15日
    浏览(48)
  • Flutter 异步操作

    在Flutter中,借助 FutureBuilder 组件和 StreamBuilder 组件,可以非常方便地完成异步操作。 一、FutureBuilder 在讲解FutureBuilder之前,你首先要知道 Future 是什么,了解了这个,后面再了解该组件就轻松许多。 在不同的编程语言中会有不同的名词来定义,在Dart语言中 选择使用Future类型

    2024年02月06日
    浏览(46)
  • 冥想第七百七十九天

    1.今天五一劳动节,懒惰了火气也大,主要是因为车钥匙妈妈拿着自己已经走了三公里了。 2.感谢好心人帮忙把钥匙送过来。 3.今天带妈妈姥姥去了北龙湖。风景超好。 4.给pve爱快安装了证书。 5.感谢父母,感谢朋友,感谢家人,感谢不断进步的自己。

    2024年02月02日
    浏览(43)
  • 第七十一回:国际化设置

    我们在上一章回中介绍了Card Widget相关的内容,本章回中将介绍 国际化设置 .闲话休提,让我们一起Talk Flutter吧。 我们在这里说的国际化设置是指在App设置相关操作,这样可以让不同国家的用户使用App时呈现不同的语言。总之,就是通过相关的操作,让App支持多个国家的语言

    2024年02月11日
    浏览(70)
  • Flutter 中的 Stream:异步编程的利器

    在Flutter中,异步编程是非常重要的一部分,特别是在处理用户输入、网络请求或其他涉及时间的操作时。Flutter提供了一种强大的工具,称为Stream,用于简化异步编程的过程。 Stream是一种用于处理异步数据的流式 API。它可以用于处理一系列事件,例如用户输入、网络请求的响

    2024年02月03日
    浏览(49)
  • 【学习前端第七十一课】小程序

    小程序目录结构 要弄清除小程序,先必须弄清除小程序开发工具创建项目的目录结构是什么样的 1、 pages 目录用于存放所有的页面,相当于是vue中的views目录 2、 index 目录相当于是一个具体的页面,它内部有4个文件 3、 index.wxml 相当于vue文件中 template/template 部分,用于存放标

    2024年02月19日
    浏览(43)
  • SpringBoot进阶教程(七十七)WebSocket

    WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 很多

    2024年02月08日
    浏览(68)
  • 数据库管理-第七十期 自己?自己(20230425)

    来到70了,最近有点卷,写的稍微多了些。 吐槽一下五一调休,周末砍一天,连6天,放5天,上3天,周末又砍一天。 今天刷抖音看到现在是如何看伍佰演唱会的:“花500买票,去伍佰的演唱会,唱伍佰的歌给伍佰听,伍佰只要起个头,插不上嘴”。突然回忆起伍佰的《突然的

    2023年04月26日
    浏览(75)
  • 【学习前端第七十四课】React生命周期

    我们这里所说的生命周期是基于类式组件的,其中主要分为三个阶段 挂载 更新 卸载 以上每一个阶段内都有自己的一系列在当前生命周期中可被自动执行的生命周期函数(类似于vue的钩子函数) 挂载阶段(初始化) 在挂载阶段按照执行顺序分别有以下几个生命周期函数 co

    2024年02月21日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包