Code前端首页关于Code前端联系我们

flutter 如何使用配置文件 pubspec.yaml 管理第三方依赖包

terry 2年前 (2023-09-23) 阅读数 85 #移动小程序

在软件开发中,往往会有公共库或者 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。

flutter如何使用配置文件pubspec.yaml来管理第三方依赖包

我们看到最新版本的“english_words”包已经支持Flutter,接下来:

  1. 将“english_words”(版本)添加到依赖列表中,如下:
    dependencies:
      flutter:
        sdk: flutter
    
      cupertino_icons: ^
      
  2. 下载该包。如果您正在 Android Studio 的编辑器视图(图 2-6)中查看,请单击右上角的 Packages。 flutter如何使用配置文件pubspec.yaml来管理第三方依赖包

    这会将依赖包安装到您的项目中。我们可以在控制台中看到如下内容:

    flutter packages get
    Running "flutter packages get" in flutter_in_action...
    Process finished with exit code 0
    

    我们也可以在控制台中找到当前项目目录,然后手动运行 flutter packages get 命令来下载依赖包。另外,需要注意dependencydev_dependency之间的区别。将前者的依赖包编译为APP源码的一部分,生成最终的安装包。最新的依赖包只是作为开发阶段的工具包使用,主要是帮助我们提高开发和测试效率,比如Flutter的自动化测试包等。

    import 'package:english_words/';
    

    当您键入时,Android Studio 会自动提供建议的库导入选项。导入后,这行代码显示为灰色,说明没有使用导入的库。

  3. 使用包english_words 生成随机字符串。
    class RandomWordsWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
       

    我们将RandomWordsWidget添加到Column的子小部件中。

    Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        ... 

  4. 当应用程序运行时,使用热重载按钮(⚡图标)更新正在运行的应用程序。每次单击“热重载”或保存项目时,都会在运行的应用程序中随机选择一个不同的单词对。这是因为单词对是在 build 方法中生成的。每次热更新时都会执行build方法,运行效果如图2-7所示。 flutter如何使用配置文件pubspec.yaml来管理第三方依赖包

其他依赖方法

上面的依赖方法依赖于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前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门