Dart中的库 , 自定义库 , 系统库 , 第三方库 , 库的重命名 , 部分导入 , 延迟加载 , 异步 async和await
库
Dart中的库
在Dart中库的使用主要通过import关键词引入
library指令可以创建一个库,每个Dart文件都是一个库,即使没有使用library指令来指定
Dart中的库主要有三种:
自定义库: import ‘lib/xxx.dart’; (例:抽离自定义类和调用)
系统内置库: import ‘dart:math’; , import ‘dart:io’; , import ‘dart:convert’;
例1:系统内置库
1
2
3
4
5
6import 'dart:math'; //引入Dart内置的库,dart:math是方法库,按Ctrl键点击可进入库的使用详情文件
main(){
print(min(12,23)); //调用math库中的方法,求两个数的最小数 输出: 12
print(max(12,50)); //调用math库中的方法,求两个数的最大数 输出: 50
}
//dart:io dart:convert 是请求api接口常用的库Pub包管理系统中的库: https://pub.dev/packages , https://pub.flutter-io.cn/packages , https://pub.dartlang.org/flutter/
Pub包使用时首先应先在项目根目录新建pubspec.yaml文件,内容容下:
1
2
3
4
5name: Run //名称,可以随意起
description: A simple command-line application. //项目描述
dependencies:
dart_console: ^0.6.0 //吧想要依赖的包的安装码输入
//举例的安装码在这里查看:https://pub.dev/packages/dart_console#-installing-tab-然后在cmd中使用cd指令cd到你的项目文件夹中,执行pub get指令进行下载安装想要的库 ,在Vscode中保存pubspec.yaml文件夹,就会自动执行pub get指令
最后在项目中引用该库
1
2import 'package:dart_console/dart_console.dart';
//该库使用文档位置:https://pub.dev/packages/dart_console#-example-tab-
库的重命名
冲突解决: 当引入的两个库中有相同的名称标识符的时候,如果是java通常我们通过协商完整的包名路径来指定是用哪个
例1:如果两个库的名称一个是Person1,一个是Person2,而库的内容的类的名称都是Person类,这样如果我们同时引入这两个库的时候在实例化的时候就会报错,因为两个库都有同名称的Person类,语言不知道该实例化哪个,这时可使用 as 关键词对其中一个进行重命名
1
2
3
4
5
6//使用as关键词给Person2重命名
import 'lib/Person1.dart';
import 'lib/Person2.dart' as lib;
//实例化时调用lib.Person即可,等于Person2库内的所有重名的类都可以在前面添加lib来重命名
Person p1=Person(); //Person1库中的Person类
lib.Person p2=lib.Person(); //Person2库中的Person类
部分导入
如果只需要导入库的一部分,有两种方法:
1.只导入需要的部分,使用show关键词 例如:
1
import 'package:lib1/lib1.dart' show foo; //仅导入foo方法
2.隐藏不需要的部分,使用hide关键词 例如:
1
import 'package:lib2/lib2.dart' hide foo; //仅隐藏foo方法
延迟加载
延迟加载也称为懒加载,可以在需要的时候再进行加载
懒加载最大的好处是可以减少APP的启动时间
懒加载使用 deferred as 关键词来指定 例如:
1
import 'package:deferred/hello.dart' deferred as hello;
当需要使用时,需要使用 loadLibrary() 方法来加载 例如:
1
2
3
4greet()async{
await hello.loadLibrary();
hello.printGreeting();
}
异步 async和await
只有async方法才能使用await关键词调用方法
如果调用别的async方法必须使用await关键词
async是让方法变成异步,await是等待异步方法执行完成
例1:async和await的使用
1
2
3
4
5
6
7main()async{ //异步方法
var result=await testAsync(); //异步方法需要在异步方法中被await关键词调用
print(result);
}
testAsync()async{ //异步方法
return '这是一个async方法,需要await关键词调用';
} //输出: 这是一个async方法,需要await关键词调用
妈耶终于结束了…下一步 进军Flutter