Flutter 学习之旅11 包管理


在日常开发中,很多时候需要用到第三方的 SDK ,这些 SDK 可能会被很多个项目用到,因此可以将这些代码单独抽到一个模块中,使用的时候只需要集成对于的模块即可,

在 Java 中,模块会被打成一个 jar 包

在 Android 中,模块会被打成一个· aar 包

一个 app 在开发的过程中可能会依赖非常多的包,这些包通常都会出现交叉依赖,版本依赖等,如果需要手动管理,则会非常麻烦,因此,各种编程语言的官方都会提供一下包管理工具,如:

在 Android 中提供了 Gradle 来管理依赖

在 IOS 中用 Cocoapods 或者 Carthage 来管理依赖

而在 Flultter 中,使用的是 yaml 文件作为其配置文件,全名 pubspec.yaml

pubspec.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
name: flutter_study
description: A new Flutter application.
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.0
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true

name :应用或者包名称

description:应用或包的描述,简介

version:应用或包的版本号

environment:环境版本

dependencies:应用或包导入的其他包或者插件

dev_dependencies:开发环境依赖的工具包(而不是 flutter 本身依赖的包)

flutter:flutter 相关配置选项

Pub 仓库

Pub 是 Google 官方的 Dart Packages 仓库,类似于 android 中的 jcenter ,我们可以在 Pub 上面查找我们需要的包和插件,也可以想 Pub 发布我们的包和插件

示例:

在 Pub 上找到一个随机字符串的 widget,并确定最新版本号和是否支持 flutter,

添加依赖

1
2
3
4
5
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.0
english_words : ^3.1.5

同步代码 pub Get

dev_dependencies

dev_dependencies 的依赖包只是作为开发阶段的一个工具包,主要是用于帮助我们提高开发,测试效率等,例如 flutter 自动化测试等

dependencies 会将依赖包作为 app 源码的一部分并参与编译,生成最后的安装包

使用 english_words 包生成随机字符串

1
2
3
4
5
6
7
8
9
class RandomWordsWidget extends StatelessWidget {
final wordPair = new WordPair.random();
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: new Text(wordPair.toString()));
}
}

将上面的 widget 添加到界面中

点击热重载按钮,每次都会随机生成不同的单词

其他依赖方式

依赖本地包

1
2
3
dependencies:
pkg1:
path: ../../code/pkg1

如果我们真正本地开发一个包,名字为 pkg1,可以通过上面的方式依赖,路径可以相对,也可以绝对

依赖 git

1
2
3
4
5
//git方式
dependencies:
flutter_easyrefresh:
git:
url: git://github.com/xuelongqy/flutter_easyrefresh.git
1
2
3
4
5
flutter_easyrefresh:依赖的项目名称
dependencies:
kittens:
git: git@github.com:munificent/kittens.git
path: flutterpackagename

依赖git仓库下的某个flutter package

Flutter 项目目录结构

android

flutter 与 android 原生交互的一些代码

ios

flutter 与 ios 原生交互的一些代码

lib

这里存放的是 dart 语言编写的代码,并且是项目中最核心的代码,我们主要编写的代码就是在这个文件夹

pubspec.yaml

这里是配置依赖项的文件,例如远程的 pub 仓库,git 仓库等