flutter 如何使用配置文件 pubspec.yaml 管理第三方依赖包
在软件开发中,往往会有公共库或者 SDK 可以被很多项目使用。因此,这些代码被提取到一个独立的模块中。然后当项目需要使用这个模块时,直接集成这个模块,可以大大提高开发效率。很多编程语言或者开发工具都支持这种“模块共享”机制。例如,这个独立的模块被打包在Java语言中的jar包、Android中的aar包、web开发中的npm包等。简单来说,我们把这种可共享的独立模块称为“包”。
在目前的开发中,一个APP往往会依赖很多个包,而这些包通常会存在交叉依赖、版本依赖等。因此,不同的开发生态或者编程语言的开发者通常会提供一些包管理工具。比如Android使用Gradle来管理依赖,iOS使用Cocoapods或者Karthago来管理依赖,Node使用npm等。Flutter开发也有自己的包管理工具。本节我们主要介绍Flutter如何使用配置文件(位于项目根目录)来管理第三方依赖包。
YAML 是一种直观、可读性强且易于阅读的文件格式。与xml或Json相比,它的语法简单,非常容易解析。因此,配置文件中经常使用YAML。 Flutter 也使用 yaml 文件。比如它的配置文件。 Flutter项目默认的配置文件是。我们看一个简单的例子:
name: flutter_in_action
description: First Flutter application.
version: 1.0.0+1
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
下面我们一一解释一下各个字段的含义:
name
:应用程序或包名称。description
:应用程序或包的描述和介绍。version
:应用程序或包的版本号。依赖项
:应用程序或包依赖的其他包或插件。dev_dependency
:开发环境依赖的工具包(而不是Flitter应用程序本身依赖的包)。flutter
:Flutter相关配置选项。
如果我们的Flutter应用本身依赖于某个特定的包,我们必须将依赖包添加到dependency
另外,我们将通过一个例子来演示如何添加、下载和使用第三方包。
Pub 存储库
Pub ( ) 是 Google 官方的 Dart Packages 存储库,类似于 Node、jcenter 和 Android 中的 npm 存储库。我们可以在Pub上找到我们需要的包和插件,也可以在Pub上发布我们的包和插件。我们将在后面的章节中介绍如何将我们的包和插件发布到 Pub。
示例
接下来我们实现一个显示随机字符串的小部件。有一个名为“english_words”的开源软件包,其中包含数千个常用英语单词以及一些有用的功能。我们首先在Pub上找到english_words包(如图2-5),并确定其最新版本号以及是否支持Flutter。
我们看到最新版本的“english_words”包已经支持Flutter,接下来:
- 将“english_words”(版本)添加到依赖列表中,如下:
dependencies: flutter: sdk: flutter cupertino_icons: ^
- 下载该包。如果您正在 Android Studio 的编辑器视图(图 2-6)中查看,请单击右上角的 Packages。
这会将依赖包安装到您的项目中。我们可以在控制台中看到如下内容:
flutter packages get Running "flutter packages get" in flutter_in_action... Process finished with exit code 0
我们也可以在控制台中找到当前项目目录,然后手动运行
flutter packages get
命令来下载依赖包。另外,需要注意dependency
和dev_dependency
之间的区别。将前者的依赖包编译为APP源码的一部分,生成最终的安装包。最新的依赖包只是作为开发阶段的工具包使用,主要是帮助我们提高开发和测试效率,比如Flutter的自动化测试包等。import 'package:english_words/';
当您键入时,Android Studio 会自动提供建议的库导入选项。导入后,这行代码显示为灰色,说明没有使用导入的库。
- 使用包
english_words
生成随机字符串。class RandomWordsWidget extends StatelessWidget { @override Widget build(BuildContext context) {
我们将
RandomWordsWidget
添加到的
Column的子小部件中。
Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ ...
- 当应用程序运行时,使用热重载按钮(⚡图标)更新正在运行的应用程序。每次单击“热重载”或保存项目时,都会在运行的应用程序中随机选择一个不同的单词对。这是因为单词对是在
build
方法中生成的。每次热更新时都会执行build
方法,运行效果如图2-7所示。
其他依赖方法
上面的依赖方法依赖于pub store。但我们也可以依赖本地包和 Git 存储库。
- 依赖本地包如果我们在本地开发一个包,包名为pkg1,我们可以依赖以下路径:
dependencies: pkg1: path: ../../code/pkg1
路径可以是相对路径,也可以是绝对路径。
- 依赖 Git:您还可以依赖存储在 Git 存储库中的包。如果包位于存储库的根目录中,请使用以下语法
dependencies: pkg1: git: url: git://
上面假设包位于 Git 存储库的根目录中。如果不是这样,可以使用path参数来指定相对位置,例如:
dependencies: package1: git: url: git://github.com/flutter/packages.git path: packages/package1
上面介绍的依赖方法是Flutter开发中常用的,但是还有一些其他的依赖方法。读者可以自行查看完整内容:。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。