Flutter基础:Dart编程语言——库的使用

前面介绍Dart基础知识的时候基本上都是在一个文件里面编写Dart代码的,但实际开发中不可能这么写,模块化很重要,所以这就需要使用到库的概念。

在Dart中,库的使用时通过import关键字引入的。

library指令可以创建一个库,每个Dart app都是一个库,即使没有使用library指令来指定。

本文将介绍如何使用一个库。

基本使用

使用import来引入一个库,这个是跟大多数语言一致的,如创建的第一个Flutter应用中,默认生成的main.dart文件中就有这么一句:

1
import 'package:flutter/material.dart';

其中import后面跟着的是库的URI,上面例子中的路径格式为:package:scheme,其中scheme是由指定的库通过包管理器提供的,在Flutter中,Dart是通过pub工具来管理包的。

上面是外部的库的引入方式,对于内部库,dart的路径格式为:dart:scheme,示例如下所示:

1
import 'dart:io';

而对于同一包下面的dart库,如我们在main.dart下面新增了一个testFile.dart的文件,我们需要引入它使用的时候则直接通过相对路径引入即可:

1
import 'testFile.dart';

冲突解决

当引入两个库中有相同名称标识符的时候,如果是java通常我们通过写上完整的包名路径来指定使用的具体标识符,甚至不用import都可以,但是Dart里面是必须import的。当冲突的时候,可以使用as关键字来指定库的前缀。如下例子所示:

1
2
3
4
5
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.

部分导入

如果只需要导入库的一部分,有两种模式:

模式一:只导入需要的部分,使用show关键字,如下例子所示:

1
import 'package:lib1/lib1.dart' show foo;

模式二:隐藏不需要的部分,使用hide关键字,如下例子所示:

1
import 'package:lib2/lib2.dart' hide foo;

延迟加载

也称为懒加载,可以在需要的时候再进行加载。
懒加载的最大好处是可以减少APP的启动时间。

懒加载使用deferred as关键字来指定,如下例子所示:

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

当需要使用的时候,需要使用loadLibrary()方法来加载:

1
2
3
4
greet() async {
await hello.loadLibrary();
hello.printGreeting();
}
文章作者: Kevin Wu
文章链接: https://kevinwu.cn/p/e289c2b7/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KevinWu.CN
支付宝打赏