本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Dart Async Await
async 和 await
1. 只有async方法才能使用await关键字调用方法
1. 如果调用别的async方法必须使用await关键字
- async让方法变成异步
- await等待异步方法执行完成
异步方法
textAsync() async{
return 'Hello Async';
}
void main() async {
var result = await textAsync();
print(result); // Hello Async
}
Dart 库的重命名 冲突解决
冲突解决
当引入两个库中有相同名称标识符的时候,如果是java通常我们通过写上完整的包名路径来指定使用的具体标识符,甚至不用import都可以,但是Dart里面是必须import的。当冲突的时候,可以使用as关键字来指定库的前缀。如下例子所示:
import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;
Element element1 = new Element(); // Uses Element from lib1.
lib2.Element element2 = new lib2.Element(); // Uses Element from lib2.
新建lib文件夹 —— 新建文件 Person.dart
class Person {
String name = "张三";
int age = 20;
// 构造函数
Person(this.name, this.age);
void printInfo() {
print("${this.name}------${this.age}");
}
}
新建lib文件夹 —— 新建文件 Person1 .dart
class Person {
String name = "张三";
int age = 20;
// 构造函数
Person(this.name, this.age);
void printInfo() {
print("Person1: ${this.name}------${this.age}");
}
}
主文件
import 'lib/Person.dart';
import 'lib/Person1.dart' as lib;
void main(List<String> args) {
Person p1 = new Person('张三', 22);
p1.printInfo(); // 张三------22
lib.Person p2 = new lib.Person('李四', 22);
p2.printInfo(); // Person1: 李四------22
}
Dart 库部分导入
部分导入
如果只需要导入库的一部分,有两种模式:
模式一:只导入需要的部分,使用show关键字,如下例子所示:
import 'package:lib1/lib1.dart' show foo;
模式二:隐藏不需要的部分,使用hide关键字,如下例子所示:
import 'package:lib2/lib2.dart' hide foo;
新建lib文件夹 —— 新建MyMath.dart文件
void getName() {
print('张三');
}
void getAge() {
print(22);
}
void getSex() {
print('男');
}
主文件
import 'lib/MyMath.dart' show getName;
void main() {
getName();
}