Flutter 教程(四)包管理

在 App 开发中,我们往往会依赖很多包,而这些包通常都有交叉依赖关系、版本依赖等,如果由开发者手动来管理应用中的依赖包将会非常麻烦。因此,各种开发生态或编程语言官方通常都会提供一些包管理工具,比如在 Android 提供了 Gradle 来管理依赖,iOS 用 Cocoapods 或 Carthage 来管理依赖,Node 中通过 npm 等。而在 Flutter 中,我们使用 Pub + yaml文件 来实现包的管理。

Pub 和 pubspec.yaml 文件

Pub 是 Dart 中的包管理工具,用来管理代码和资源;而 pubspec.yaml 是项目的配置文件。类似于 Android 中的 Gradle 和 build.gradle 文件之间的关系。

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

pubspec.yaml 文件内容及其字段的作用

pubspec.yaml 文件的内容及其字段的作用如下:

yaml 复制代码
# 应用或包名称
name: flutter_demo
# 应用或包的描述、简介
description: "A new Flutter project."
# 此设置可避免项目被意外地通过 flutter pub publish 命令发布到 pub.dev。
# 若你有私有项目,这种设置很实用。若要将项目发布到 pub.dev,则需移除这行代码。
publish_to: 'none'
# 应用或包的版本号
version: 1.0.0+1
# 环境要求
environment:
  # 规定了项目所依赖的 Dart SDK 版本
  sdk: ^3.7.0

# 应用或包依赖的其他包或插件
dependencies:
  # 表明项目依赖 Flutter SDK
  flutter:
    sdk: flutter
  # Cupertino 图标字体风格的依赖,可结合 `CupertinoIcons` 类使用 iOS 风格的图标。  
  cupertino_icons: ^1.0.8

# 开发环境依赖的工具包(而不是flutter应用本身依赖的包)
dev_dependencies:
  # flutter 测试
  flutter_test:
    sdk: flutter
  # 代码检查规则  
  flutter_lints: ^5.0.0

# flutter相关的配置选项
flutter:
  # 确保 Material 图标字体随应用一起包含,这样就能使用 Icons 类中的图标。
  uses-material-design: true

增加包依赖

如果我们需要增加新的包依赖,这里以 characters 包为例。第一步,在 Pub 仓库 中找到我们需要的包依赖。如下图所示:

第二步,进入 Installing 项,可以看到使用的步骤,如下图所示:

第三步,安装上面介绍的流程在dependencies 后面增加新的配置,代码示例如下:

yaml 复制代码
# 应用或包依赖的其他包或插件
dependencies:
  # 表明项目依赖 Flutter SDK
  flutter:
    sdk: flutter
  # Cupertino 图标字体风格的依赖,可结合 `CupertinoIcons` 类使用 iOS 风格的图标。  
  cupertino_icons: ^1.0.8
  # 增加的包依赖
  characters: ^1.4.0

第四步,点击 Pub get 将依赖包安装到我们的项目

安装完成之后,我们就可以导入 import 'package:characters/characters.dart'; 包来使用了。

  • Pub get:根据 pubspec.yaml 文件中声明的依赖,下载并安装所有必需的包(包括直接依赖和间接依赖)
  • Pub outdated: 分析当前项目的依赖,列出所有可升级的包及其最新版本
  • Pub upgrade: 用于检索当前 Package 所依赖的其它 Package 的最新版本。如果 pubspec.lock 文件已经存在,则忽略其保存的版本并以 pubspec 文件中指定的最新版本为主。
  • Flutter doctor: 用于检查和诊断开发环境中的问题。它会列出当前系统中安装的依赖项,并指出任何缺失或配置错误的部分。

其他依赖方式

上文所述的依赖方式是依赖Pub仓库的。但我们还可以依赖本地包和git仓库。

依赖本地包

如果我们正在本地开发一个包,包名为pkg1,我们可以通过下面方式依赖:

yaml 复制代码
dependencies:
    pkg1:
        path: ../../code/pkg1

注意:路径可以是相对的,也可以是绝对的。

依赖Git

你也可以依赖存储在Git仓库中的包。如果软件包位于仓库的根目录中,请使用以下语法

yaml 复制代码
dependencies:
  pkg1:
    git:
      url: git://github.com/xxx/pkg1.git

上面假定包位于Git存储库的根目录中。如果不是这种情况,可以使用path参数指定相对位置,例如:

yaml 复制代码
dependencies:
  package1:
    git:
      url: git://github.com/flutter/packages.git
      path: packages/package1

上面介绍的这些依赖方式是Flutter开发中常用的,但还有一些其他依赖方式,完整的内容读者可以自行查看:www.dartlang.org/tools/pub/d...

参考

相关推荐
程序员Ctrl喵1 天前
异步编程:Event Loop 与 Isolate 的深层博弈
开发语言·flutter
前端不太难1 天前
Flutter 如何设计可长期维护的模块边界?
flutter
小蜜蜂嗡嗡1 天前
flutter列表中实现置顶动画
flutter
始持1 天前
第十二讲 风格与主题统一
前端·flutter
始持1 天前
第十一讲 界面导航与路由管理
flutter·vibecoding
始持1 天前
第十三讲 异步操作与异步构建
前端·flutter
新镜1 天前
【Flutter】 视频视频源横向、竖向问题
flutter
黄林晴1 天前
Compose Multiplatform 1.10 发布:统一 Preview、Navigation 3、Hot Reload 三箭齐发
android·flutter
Swift社区1 天前
Flutter 应该按功能拆,还是按技术层拆?
flutter
肠胃炎1 天前
树形选择器组件封装
前端·flutter