一架梯子,一头程序猿,仰望星空!

Dart import导入包


大家如果使用过其他编程语言,对于包(package)管理都不陌生了,我们经常需要导入我们本地的模块,或者导入外部开源的第三方库(或者叫包)。Dart语言中主要通过import指令导入包,下面分别介绍具体的用法。

1.导入内置包

Dart语言内置了一些常用的包,这些内置包随着Dart sdk一起安装在本地。导入内置包使用 dart: 作为路径前缀。

例子

// 导入内置math包,使用dart:作为前缀。
// math包主要提供一些数学相关的函数,例如,正弦函数、求最大值函数等等
import 'dart:math';

void main() {
  // 调用math包中的max函数,求两个数中的最大值。
  var a = max(1,100);
  print(a);
}

2.包的别名

通过上面的例子我们知道,默认情况调用包中的函数或者类,不需要包名作为前缀,上面调用了math包中的max函数,直接使用包中的函数名。但是这样会存在命名冲突的可能性,如果导入的两个包,包含了同名的类或者函数,就会出现命名冲突,因此提供别名机制。

别名例子:

// 使用 as 关键词,指定包的别名
import 'dart:math' as math;

void main() {
  // 使用别名,引用包中的函数 。
  var a = math.max(1,100);
  print(a);
}

提示: 推荐使用别名引用包的成员,不仅可以解决命名冲突问题,也可以增加代码的可读性,我们可以直观知道到底引用的是那个包的成员。

3.导入包的部分内容。

有时候我们不想导入整个包,只想导入包里面的某个类或者某个函数。dart提供了show和hide关键词处理导入包的部分内容。

例子:

// 仅导入max函数, 导入多个内容使用逗号分隔,例如 show max,sin
import 'dart:math' show max;

// 除了max函数,导入math中的所有内容。
import 'dart:math' hide max;

4.导入本地模块

项目开发中自然少不了导入本地的模块,一般项目中会有多个dart脚本文件,每个dart脚本实现不同模块的代码,在需要的时候直接导入dart脚本文件即可。

例子:

本地模块:libs/stack.dart

class Stack<T> {
  int _capacity;
  int _last;
  List<T> _data;

  Stack(int cap) : _capacity = cap, _data = List<T>(cap), _last = -1;

  // 出栈
  T pop() {
  	if (_last > -1) {
  		T v = _data[_last];
  		_last--;
  		return v;
  	}
  	else {
  		return null;
  	}
  }

  // 入栈
  bool push(T v) {
  	if (_last + 1 == _capacity) {
  		// 超出栈空间容量
  		return false;
  	}
  	_last++;
  	_data[_last] = v;
  }
}

导入本地模块

// 直接通过本地文件路径导入dart脚本
import 'libs/stack.dart';

void main() {
  // 引用本地模块定义的类
  var s = Stack<int>(10);
}

3.导入第三方开源包

目前大部分开发语言都提供了包管理机制,例如: java的maven, nodejs的npm。dart语言可以使用pub管理第三方包,负责包的下载、更新、包的依赖。

pub命令在安装Dart sdk就已经安装在本地。

使用第三方包的步骤:

  1. 在项目根目录创建pubspec.yaml包配置文件。
  2. 配置项目依赖的包和对应的版本。
  3. 在程序中导入包。

3.1.查找第三方包

https://pub.dev/

这个是pub的中央仓库, 上面有大量的第三方开源包,可以到这里找到自己想要的包。

3.2.配置pub国内镜像代理

直接下载中央仓库的包会很慢,甚至下载失败,可以配置下国内的镜像仓库代理。

linux配置

export PUB_HOSTED_URL=https://pub.flutter-io.cn

windows配置

set PUB_HOSTED_URL=https://pub.flutter-io.cn

其实就是配置PUB_HOSTED_URL环境变量的值,大家可以使用熟悉的方式设置环境变量。

3.3.配置依赖包

在项目根目录创建pubspec.yaml包配置文件。
主要的配置属性为:

  • name - 应用名字,或者叫包名我们的程序也算是一个包。
  • dependencies - 依赖的包, 格式: 包名: 版本号

例子:
这里配置了两个包intl和http

name: demo
dependencies:
  intl: ^0.15.8
  http: ^0.12.0+2

关于版本号说明:

  • ^1.2.1 代表的更新版本范围为 >=1.2.1 && < 2.0.0
  • ^0.2.1 代表的更新版本范围为 >=0.2.1 && < 0.3.0
  • ^0.0.2 代表的更新版本范围为 0.0.2(相当于锁定为了0.0.2版本)

3.4.下载依赖包

打包命令行窗口,切换到项目根目录。

输入下面命令:

pub get

3.5.导入第三方开源包

依赖包下载安装后,我们就可以使用import导入第三方包,第三方包前缀为 package:

// 这里导入http包,别名为http
import 'package:http/http.dart' as http;