dart语法8-库
2020-05-16 本文已影响0人
jxtx
dart语法1
dart语法2-内置类型
dart语法3-函数
dart语法4-操作符
dart语法5-异常
dart语法6-类
dart语法7-泛型
dart语法8-库
dart语法9-异步
dart语法10-生成器
dart语法11
库
使用核心库
import 后的必须参数为库 的 URI。(Uniform Resource Identifier统一资源标识符)
对于内置的库,URI 使用特殊的 dart: scheme。
对于其他的库,你可以使用文件系统路径或者 package: scheme。
import "dart:math";
void main() {
print(sqrt(4));//开平方 2.0
}
载入第三方库
pubspec.yaml声明需要引用的库,使用Packages get进行拉取。

载入文件
pubspec.yaml声明需要引用的库,使用Packages get进行拉取。

指定库前缀
如果两个库有冲突的标识符,可以为其中一个或两个库都指定前缀:
//MyLib1.dart 和 MyLib2.dart 都有一个名字为 MyLib 的类。
import 'MyLib1.dart' as lib1;
import 'MyLib2.dart' as lib2;
void main() {
var myLib = lib1.MyLib();
var myLib2 = lib2.MyLib();
}
选择性载入
- show-只载入库的某些部分
- hide-筛选掉库的某些部分
import 'Mylib1.dart' as lib1 show Test;
import 'Mylib2.dart' as lib2 hide Test;
var test = lib1.Test();
var lib = lib2.MyLib();
延迟载入
- 使用deferred as导入
- 使用标识符调用loadLibrary()加载库
使用 await 关键字暂停代码执行一直到库加载完成。
可提高程序启动速度。
用在不常使用的功能。
用在载入时间过长的包。
执行 A/B 测试,例如 尝试各种算法的 不同实现。
import 'MyLib1.dart' deferred as lazyLib;
void main() {
lazyLoad();
}
lazyLoad() async {
await lazyLib.loadLibrary();
var t = lazyLib.Test();
t.test();
}
自定义库
part 可以把一个库分开到多个 Dart 文件中。
或者我们想让某一些库共享它们的私有对象的时候,可以需要使用part。
import不会完全共享作用域,而part之间是完全共享的。如果说在A库中import了B库,B库import了C库,A库是没有办法直接使用C库的对象的。而B,C若是A的part,那么三者共享所有对象。并且包含所有导入。
