在Dart中,库的使用是通过 import 关键字引入的。 library指令创建一个库,每个文件都是一个库(即使没有library指定)。— 因此无须导出。
一、自定义库
import ‘lib/xxx.dart’;
// lib/Animal.dartclass 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.dartimport '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 & outputimport '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/latestvar 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;// 别名aliasvoid 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:手动导出
