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...

参考

相关推荐
小墙程序员8 小时前
Flutter 教程(六)路由管理
flutter
zacksleo12 小时前
鸿蒙Flutter开发故事:不,你不需要鸿蒙化
flutter·harmonyos
帅次14 小时前
Flutter DropdownButton 详解
android·flutter·ios·kotlin·gradle·webview
bst@微胖子15 小时前
Flutter项目之构建打包分析
flutter
江上清风山间明月17 小时前
Flutter开发There are multiple heroes that share the same tag within a subtree报错
android·javascript·flutter·动画·hero
无知的前端17 小时前
Flutter 性能优化:实战指南
flutter·性能优化
飞川00118 小时前
Flutter敏感词过滤实战:基于AC自动机的高效解决方案
android·flutter
小墙程序员18 小时前
Flutter 教程(五)事件处理
flutter
耳東陈18 小时前
Flutter开箱即用一站式解决方案
flutter
SoaringHeart18 小时前
Flutter进阶:日志信息的快速定位解决方案 DLog
前端·flutter