持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第13天,点击查看活动详情
今日目标
前面这些天我们学习到了一些dart方面的一些基础知识。今天我们来了解以下Dart中的库、自定义库、系统库还有第三方库
三种库的形式
-
自定义库 import 'lib/xxx.dart';
-
系统内置库 import 'dart:math'; import 'dart:io'
-
Pub包管理系统中的库
pub.dev/packages
pub.flutter-io.cn/packages
pub.dartlang.org/flutter第三方库需要在我们的项目根目录下创建一个pubspec.yaml文件,在pubspec.yaml文件内配置好名称、描述、依赖等信息,然后运行
pub get
通过互联网获取包并下载到本地,然后在我们的项目中引入需要的库 通过形如import 'package:http/http.dart as http'
这种形式引入到项目中进行使用。
自定义库
什么是自定义库呢?
在编码的时候我们经常会遇到一些重复使用的代码,这个时候我们将这些重复使用的代码抽离出来放到一个单独的dart文件里进行管理,这个文件就可以称之为自定义库。我们在其他需要使用到地方直接引入这个自定义库就可以了,形如import 'lib/myself.dart'
,就能够使用自定义库里面我们定义好的功能。
系统库
系统库就是dart中已经内置好的一些库,引用这些系统库的时候可以形import 'dart:io'
这样进行引用。
扩展 async/await
比如我们在使用io这个库去发起请求的时候,接口的响应结果需要等待一下才会返回,假设我们借来的操作需要依赖于接口响应的内容,这个时候我们就可以使用到async/await这个方式。
testAsync() async{
return 'hihihih';
}
void main() async{
var result = await testAsync();
print(result);
}
使用async/await有两点需要记住\
- 只有async方法才能使用await关键字调用方法
- 如果调用别的async方法必须使用await关键字
async是让方法变成异步,await是等待异步方法的执行完毕。
第三方库
第三方库也就是其他人写好的托管在一些包管理平台上的库。
通过import 'package:http/http.dart' as http
这种方式引入第三方库。通常来说第三方库会有一个使用文档,通过文档可以了解库的功能以及如何使用。
学习过前端的同学这里就很熟悉了,这里就和我们使用的npm包一个意思
库冲突和重命名
假设如下场景
// lib/person1.dart
class Person{}
// lib/person2.dart
class Person(){}
// main.dart
import 'lib/person1.dart';
import 'lib/person2.dart';
Person a = new Person();
我们有两个自定义库,但是在文件内定义的类名都叫Person, 在main.dart中引入这两个文件,实例化Person,这个时候就会报错,因为出现类名冲突。这个时候就可以通过as重命名来解决冲突
// main.dart
import 'lib/person1.dart';
import 'lib/person2.dart' as Person2;
Person2.Person p2 = new Person2.Person();
部分导入
// lib/a.dart
void printName () {};
void printAge() {};
void printSex() {};
// main.dart
import 'lib/a.dart' show printName;
import 'lib/a.dart' hide printAge;
向上面这样通过show关键字来限定要引入库中的哪些方法。又或者通过hide关键字表示不引入库中的哪些方法。
ending
持续学习,加油,如有不对的地方还请指正,谢谢~~