在Dart中,库的使用是通过 import 关键字引入的。 library指令创建一个库,每个文件都是一个库(即使没有library指定)。— 因此无须导出。

image.png

一、自定义库

import ‘lib/xxx.dart’;

  1. // lib/Animal.dart
  2. class Animal<T> {
  3. String _name;
  4. T age;
  5. Animal(this._name, this.age);
  6. String get getInfo {
  7. return "${this._name}-${this.age}";
  8. }
  9. void _run()=> print("Animal私有方法");
  10. void execRun() {
  11. print("Animal共有方法,下面会调用私有方法↓↓↓");
  12. this._run();
  13. }
  14. }
  15. // main.dart
  16. import 'lib/Animal.dart';
  17. void main() async{
  18. Animal<int> a1 = new Animal('小狗', 3);
  19. print(a1.getInfo);
  20. a1.execRun();
  21. }

二、系统库

import ‘dart:math’; import ‘dart:io’; import ‘dart:convert’;

  1. import 'dart:math';
  2. import 'dart:io';// input & output
  3. import 'dart:convert' as convert;// 处理json格式
  4. void main() async{
  5. print("最小值:${min(12, 13)}");
  6. var result = await getDataFromZhihuAPI();
  7. print(result);
  8. }
  9. getDataFromZhihuAPI() async {
  10. // 1. 创建HttpClient对象
  11. HttpClient httpClient = new HttpClient();
  12. // 2. 创建Uri对象 -- http://news-at.zhihu.com/api/3/stories/latest
  13. var url = new Uri.http('news-at.zhihu.com', '/api/3/stories/latest');
  14. // 3. 发起请求,等待请求
  15. var request = await httpClient.getUrl(url);
  16. // 4. 关闭请求,等待响应
  17. var response = await request.close();
  18. // 5. 解码响应的内容
  19. return await response.transform(convert.utf8.decoder).join();
  20. }

三、第三方库

  1. import 'package:http/http.dart' as http;
  2. import 'package:date_format/date_format.dart';
  3. void main() async{
  4. print(formatDate(DateTime(1989, 02, 21), [yyyy, '-', mm, '-', dd]));
  5. await getDataForHttp();
  6. }
  7. getDataForHttp() async {
  8. var url =
  9. Uri.https('www.googleapis.com', '/books/v1/volumes', {'q': '{http}'});
  10. // Await the http get response, then decode the json-formatted response.
  11. var response = await http.get(url);
  12. if (response.statusCode == 200) {
  13. var jsonResponse = convert.jsonDecode(response.body);
  14. var itemCount = jsonResponse['totalItems'];
  15. print('Number of books about http: $itemCount.');
  16. } else {
  17. print('Request failed with status: ${response.statusCode}.');
  18. }
  19. }

四、别名,部分导入

4.1 别名alias

  1. import 'dart:convert' as convert;// 别名alias
  2. void main() async{
  3. // utf8.decoder 没取别名直接使用
  4. // convert.utf8.decoder 取别名之后需添加 `别名.`;表示别名是一个包含这个库所有的属性和方法的集合
  5. }

4.2 部分导入

  1. // 仅导入min和max方法
  2. import 'dart:math' show min max;
  3. // 仅忽略导入min和max方法,其他方法均导入
  4. import 'dart:math' hide min max;

4.3 延迟加载

也称之为 懒加载:在需要使用的时候再进行加载,而不是一开始全量加载。 好处:减少APP启动时间 关键字:deferred as

  1. import 'package:deferred/hello.dart' deferred as hello;
  2. greet() async {
  3. await hello.loadLibrary();// 等待加载完成
  4. hello.printGreeting();
  5. }

4.4 part export

part: 库内容太多,分片处理 export:手动导出