在Dart中,库的使用是通过 import 关键字引入的。 library指令创建一个库,每个文件都是一个库(即使没有library指定)。— 因此无须导出。
一、自定义库
import ‘lib/xxx.dart’;
// lib/Animal.dart
class Animal<T> {
String _name;
T age;
Animal(this._name, this.age);
String get getInfo {
return "${this._name}-${this.age}";
}
void _run()=> print("Animal私有方法");
void execRun() {
print("Animal共有方法,下面会调用私有方法↓↓↓");
this._run();
}
}
// main.dart
import 'lib/Animal.dart';
void main() async{
Animal<int> a1 = new Animal('小狗', 3);
print(a1.getInfo);
a1.execRun();
}
二、系统库
import ‘dart:math’; import ‘dart:io’; import ‘dart:convert’;
import 'dart:math';
import 'dart:io';// input & output
import 'dart:convert' as convert;// 处理json格式
void main() async{
print("最小值:${min(12, 13)}");
var result = await getDataFromZhihuAPI();
print(result);
}
getDataFromZhihuAPI() async {
// 1. 创建HttpClient对象
HttpClient httpClient = new HttpClient();
// 2. 创建Uri对象 -- http://news-at.zhihu.com/api/3/stories/latest
var url = new Uri.http('news-at.zhihu.com', '/api/3/stories/latest');
// 3. 发起请求,等待请求
var request = await httpClient.getUrl(url);
// 4. 关闭请求,等待响应
var response = await request.close();
// 5. 解码响应的内容
return await response.transform(convert.utf8.decoder).join();
}
三、第三方库
- pub包管理系统中的第三方库-类似于npm,如下:
- 使用方法:
- 项目根目录创建
pubspec.yaml
文件。- 配置名称、描述、依赖等信息。
- 运行
pub get
获取远程包到本地。- 引入格式为
import 'package:http/http.dart' as http
; 具体使用查看文档即可。
import 'package:http/http.dart' as http;
import 'package:date_format/date_format.dart';
void main() async{
print(formatDate(DateTime(1989, 02, 21), [yyyy, '-', mm, '-', dd]));
await getDataForHttp();
}
getDataForHttp() async {
var url =
Uri.https('www.googleapis.com', '/books/v1/volumes', {'q': '{http}'});
// Await the http get response, then decode the json-formatted response.
var response = await http.get(url);
if (response.statusCode == 200) {
var jsonResponse = convert.jsonDecode(response.body);
var itemCount = jsonResponse['totalItems'];
print('Number of books about http: $itemCount.');
} else {
print('Request failed with status: ${response.statusCode}.');
}
}
四、别名,部分导入
4.1 别名alias
import 'dart:convert' as convert;// 别名alias
void main() async{
// utf8.decoder 没取别名直接使用
// convert.utf8.decoder 取别名之后需添加 `别名.`;表示别名是一个包含这个库所有的属性和方法的集合
}
4.2 部分导入
// 仅导入min和max方法
import 'dart:math' show min max;
// 仅忽略导入min和max方法,其他方法均导入
import 'dart:math' hide min max;
4.3 延迟加载
也称之为 懒加载:在需要使用的时候再进行加载,而不是一开始全量加载。 好处:减少APP启动时间 关键字:deferred as
import 'package:deferred/hello.dart' deferred as hello;
greet() async {
await hello.loadLibrary();// 等待加载完成
hello.printGreeting();
}
4.4 part export
part: 库内容太多,分片处理 export:手动导出