Dart 相关库

2023-10-07  本文已影响0人  Abner_XuanYuan

1、简介

在 Dart 中,库的使用是通过 import 关键字引入。
library 指令可以创建一个库,每个 Dart 源码文件都可以是一个库,即使没有使用 library 指令来指定。

分类
Dart 中的库主要有三种:自定义库、系统内置库、Pub 包管理系统中的库。
自定义库:Dart 源文件。
系统内置库:安装过 Dart 环境后可以直接使用的库。如:import dart: math、 import dart:io、import dart: convert等。
Pub 包管理系统中的库:第三方托管到 Pub 包管理系统的库。

2、使用注意

指定库前缀
如果导入两个存在冲突标识符的库,则可以为这两个库或者其中一个指定前缀。
例如,如果 library1 和 library2 都有一个 Element 类,那么可以通过下面的方式处理:

import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;

// 使用 lib1 中的 Element。
Element element1 = Element();

// 使用 lib2 中的 Element。
lib2.Element element2 = lib2.Element();

导入库的一部分
如果你只使用库的一部分功能,则可以选择需要导入的 内容。例如:

//只导入 foo 部分
import 'package:lib1/lib1.dart' show foo;

//导入除 foo 之外的部分
import 'package:lib2/lib2.dart' hide foo;

延迟加载库
Deferred loading (也称之为 lazy loading) 可以让应用在需要的时候再加载库。
下面是一些使用延迟加载库的场景:
1、减少 APP 的启动时间。
2、执行 A/B 测试,例如:尝试各种算法的不同实现。
3、加载很少使用的功能,例如可选的屏幕和对话框。
要延迟加载一个库,需要先使用 deferred as 来导入:

import 'package:greetings/hello.dart' deferred as hello;

当需要使用的时候,使用库标识符调用 loadLibrary() 函数来加载库:

Future greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}

注:
1、在前面的代码,使用 await 关键字暂停代码执行一直到库加载完成。
2、在一个库上你可以多次调用 loadLibrary() 函数。但是该库只是载入一次。
3、延迟加载库的常量在导入的时候是不可用的。只有当库加载完毕的时候,库中常量才可以使用。
4、在导入文件的时候无法使用延迟库中的类型。如果你需要使用类型,则考虑把接口类型移动到另外一个库中,让两个库都分别导入这个接口库。
5、Dart 隐含的把 loadLibrary() 函数导入到使用 deferred as 的命名空间 中。 loadLibrary() 方法返回一个 Future。

更多参考>>>

上一篇下一篇

猜你喜欢

热点阅读