1.7 语言特性
一、空安全
Dart是一个空安全的语言,也就是说,无法将一个非空类型对象设置为
null如果希望对象可以赋值为
null,需要在类型后加上?表示可空void main() { int? a = null; }如果一个函数是
String入参,那么函数体内的对象就必定不为null,这样就可以在编码时明确对象的可控性,做到被访问对象的空安全如果希望在调用时可以传入
null,并且是String类型,那么同理就可以实现,类型设置为String?
二、异步任务
异步任务可以在未完成之前,让程序继续执行其他的逻辑,在完成之后接收到通知。
使用
readAsString异步方法读取一个文件,通过 then 监听对调,回调中的参数就是读取的字符串。// 通过读取文件进行演示 import 'dart:io'; void main() { String path = r'pubspec.yaml'; File file = File(path); print("开始读取"); file.readAsString().then((value) { print("===读取完毕: 文字内容长度 = ${value.length}===="); }); print("做些其他的事"); }输出:
开始读取 做些其他的事 ===读取完毕: 文字内容长度 = 16====注意:
需要在同目录创建
pubspec.yaml文件,并编写Yaml内容有些时候,需要等待异步任务完成,才能继续之后的任务。可以通过
await关键字等待异步任务的完成,获取结果:Future<void> test2() async{ String path = r'pubspec.yaml'; File file = File(path); print("开始读取"); String content = await file.readAsString(); print("===读取完毕: 文字内容长度 = ${content.length}===="); print("做些其他的事"); }输出:
开始读取 做些其他的事 ===读取完毕: 文字内容长度 = 16====注意:
需要在同目录创建
pubspec.yaml文件,并编写Yaml内容在控制台输出时,main 函数结束后就会停止,而文件读取的结果要稍后才能完成,导致无法打印出读取结果
最后更新于