Flutter09 - 包管理器
一个APP在实际开发中往往会依赖很多包,而这些包通常都有交叉依赖关系、版本依赖等,如果由开发者手动来管理应用中的依赖包将会非常麻烦。因此,各种开发生态或编程语言官方通常都会提供一些包管理工具:
- Android提供了Gradle来管理依赖
- iOS用Cocoapods或Carthage来管理依赖
- Node中通过npm等
- flutter如何使用配置文件
pubspec.yaml
name: first_flutter_app # 应用或包名
description: A new Flutter application. # 应用或包的描述/简介
version: 1.0.0+1 # 应用或包的版本号
environment: # sdk环境
sdk: ">=2.1.0 <3.0.0"
dependencies: # 应用或包依赖的其他包或插件
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
dev_dependencies: # 开发环境依赖的工具包
flutter_test:
sdk: flutter
flutter: # flutter相关的配置选项
uses-material-design: true
每个字段的意义:
name
:应用或包名称。description
: 应用或包的描述、简介。version
:应用或包的版本号。dependencies
:应用或包依赖的其它包或插件。dev_dependencies
:开发环境依赖的工具包(而不是flutter应用本身依赖的包)。flutter
:flutter相关的配置选项。
下载和使用第三方库
Pub(https://pub.dev/ )是Google官方的Dart Packages仓库,类似于node中的npm仓库,android中的jcenter。
搜索需要的 第三方库后
添加新的依赖
cupertino_icons: ^0.1.2
# 新添加的依赖
english_words: ^3.1.3
然后点击Packages get
我们可以在控制台中看到以下内容
/Users/a/flutter/bin/flutter --no-color packages get
Running "flutter pub get" in first_flutter_app... 3.4s
Process finished with exit code 0
我们也可以在控制台,定位到当前工程目录,然后手动运行flutter packages get
命令来下载依赖包。
dependencies
和dev_dependencies
的区别:
前者的依赖包将作为APP的源码的一部分参与编译,生成最终的安装包。而后者的依赖包只是作为开发阶段的一些工具包,主要是用于帮助我们提高开发、测试效率,比如flutter的自动化测试包等
使用第三方库
import 'package:english_words/english_words.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final wordStr = WordPair.random(); //使用第三方库生成一个随机单词
return MaterialApp(
title: "使用第三方库生成一个随机单词",
home: Scaffold(
appBar: AppBar(
title: Text("使用第三方库生成一个随机单词"),
),
body: Center(
child: Column(
children: <Widget>[
Text(
"$wordStr",
),
],
),
),
),
);
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kqtiVe7i-1584404599137)(https://s1.ax1x.com/2020/03/17/8trfyT.png)]
其他依赖方式
-
依赖本地包
如果我们正在本地开发一个包,包名为pkg1,我们可以通过下面方式依赖:
dependencies: pkg1: path: ../../code/pkg1
路径可以是相对的,也可以是绝对的。
-
依赖Git:你也可以依赖存储在Git仓库中的包。如果软件包位于仓库的根目录中,请使用以下语法
dependencies: pkg1: git: url: git://github.com/xxx/pkg1.git
上面假定包位于Git存储库的根目录中。如果不是这种情况,可以使用path参数指定相对位置,例如:
dependencies: package1: git: url: git://github.com/flutter/packages.git path: packages/package1
但还有一些其它依赖方式,完整的内容读者可以自行查看:https://www.dartlang.org/tools/pub/dependencies