我们在上一章回中介绍url_launcher包相关的内容,本章回中将介绍如何 Flutter中的异步操作.闲话休提,让我们一起Talk Flutter吧。
概念介绍
异步操作是程序中不可缺少的内容,大部分面向对象语言和编程框架都提供了异步操作,一些三方公司也推出了异步库,比如我们在Android专栏中介绍的Rxjava库.
Flutter也提供了异步操作,实现异步操作会用到Future
和Stream
类,以及Dart语言中的async
和await
关键字。本章回中将介绍异步操作相关的用法。
使用方法
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");
}
上面的代码中,async
和await
关键字的示例程序是伪代码,大家明白其中的运行过程就可以。
Future
操作的代码可以运行,下面是程序的运行结果,从运行结果中可以看到,start和end很快就运行完成了,异步操作需要等待3秒后才可以运行,先是运行wait
方法中加载url的操作,然后是then
方法中的操作,最后是whenComplete
方法中的操作。因为整个运行过程没有发生异常,所以没有执行catchError
方法中的程序。文章来源:https://www.toymoban.com/news/detail-526629.html
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模板网!