初略讲解Flutter的包管理

栏目: IOS · Android · 发布时间: 5年前

内容简介:一个完整的应用程序往往会依赖很多第三方包,正如在原生开发中,Android使用Gradle来管理依赖,iOS使用Cocoapods或Carthage来管理依赖,而Flutter也有自己的依赖管理工具,本节我们主要介绍一下Flutter如何使用配置文件yaml是一种直观、可读性强并且容易被人类阅读的文件格式,和xml或json相比,它语法简单并容易解析,所以yaml常用于配置文件,Flutter也是用yaml文件作为其配置文件,Flutter项目默认的配置文件是下面逐一解释一下各个字段的意义:

一个完整的应用程序往往会依赖很多第三方包,正如在原生开发中,Android使用Gradle来管理依赖,iOS使用Cocoapods或Carthage来管理依赖,而Flutter也有自己的依赖管理工具,本节我们主要介绍一下Flutter如何使用配置文件 pubspec.yaml (该文件位于项目根目录)来管理第三方依赖包。

yaml是一种直观、可读性强并且容易被人类阅读的文件格式,和xml或json相比,它语法简单并容易解析,所以yaml常用于配置文件,Flutter也是用yaml文件作为其配置文件,Flutter项目默认的配置文件是 pubspec.yaml ,代码如下:

name: demo_project
description: A new Flutter project.

version: 1.0.0+1

environment:
    sdk: ">=2.1.0 <3.0.0"

dependencies:
    flutter:
        sdk: flutter
    cupertino_icons: ^0.1.2

dev_dependencies:
    flutter_test:
        sdk: flutter
    
flutter:
    uses-material-design: true
复制代码

下面逐一解释一下各个字段的意义:

  • name:应用或包名称
  • description:应用或包的描述、简介
  • version:应用或包的版本号
  • environment:应用或包的开发环境
  • dependencies:应用或包依赖的其他包或插件
  • dev_dependencies:开发环境依赖的 工具 包(而不是Flutter应用本身依赖的包)
  • flutter:Flutter相关的配置选项

方式一:依赖Pub仓库

Pub仓库

Pub(pub.dev/)是Google官方的Dart Packages仓库,类似于Node中的npm仓库,Android中的jcenter,我们可以在Pub仓库上面查找需要的包和插件,也可以向Pub仓库发布我们的包和插件。在后续的章节中笔者会介绍如何向Pub仓库发布包和插件。

Flutter应用本身想要依赖某个包,需要将所依赖的包添加到 dependencies 下。接下来通过一个例子来演示一下如何依赖、下载并使用第三方包。

依赖、下载并使用第三方包

实现一个显示随机字符串的Widget。在Pub仓库上有一个名为“english_words”的开源软件包,其中包含数千个常用的英文单词以及一些实用功能。因此我们在Pub仓库上找到“english_words”这个包,确定其最新的版本号和是否支持Flutter。

初略讲解Flutter的包管理

我们看到“english_words”包最新的版本是3.1.5,并且支持Flutter,接下来:

1、将 english_words (3.1.5版本)添加到依赖项列表

dependencies:
  flutter:
    sdk: flutter
    
  cupertino_icons: ^0.1.2
  # 新添加的依赖
  english_words: ^3.1.5
复制代码

2、下载 english_words 依赖包

使用ViSual Studio Code编辑器,将以上代码添加到pubspec.yaml文件上,单击右上角的Get Packages按钮:

初略讲解Flutter的包管理

或者按ctrl+s(保存)键,依赖包会自动下载到您的项目中,您可以在控制台中看到以下内容:

[demo_project] flutter packages get
Running "flutter packages get" in demo_project...                   0.8s
exit code 0
复制代码

或者您也可以在控制台上,手动运行 flutter packages get 命令来下载依赖包。

3、引入 english_words 依赖包

import 'package:english_words/english_words.dart';
复制代码

引入后,该行代码将会显示为灰色,表示引入的依赖包尚未使用。

4、使用 english_words 依赖包来生成随机字符串

class RandomWordsWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    //生成随机字符串
    final wordPair = new WordPair.random();
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: new Text(wordPair.toString()),
    );
  }
}
复制代码

然后,将 RandomWordsWidget 添加到 _MyHomePageState.buildColumn 的子widget中:

Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
        //...省略无关代码
        RandomWordsWidget(),
    ],
)
复制代码

5、运行应用程序,查看效果

如果应用程序正在运行,请使用热更新键(r)更新正在运行的应用程序。每次使用热更新键或保存项目时,都会在正在运行的应用程序中随机选择不同的单词对,这是因为单词对是在 build 方法内部生成的,每次热更新时, build 方法都会被执行。

方式二:依赖本地包和Git仓库

依赖本地包

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

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

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

依赖Git仓库

除了依赖本地包,还可以依赖存储在 Git仓库 中的包,如果软件包位于仓库的根目录中,请使用以下语法:

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

如果不是以上这种情况,可以使用path参数指定相对位置,例如:

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

总结

本节介绍了依赖、下载和使用一个包的整体流程,并且介绍了多种不同的依赖方式,这些是开发Flutter项目常用的技能,但Dart的dependencies还有一些其它依赖方式,完整的内容读者可以自行查看: www.dartlang.org/tools/pub/d…


以上所述就是小编给大家介绍的《初略讲解Flutter的包管理》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First JavaScript Programming

Head First JavaScript Programming

Eric T. Freeman、Elisabeth Robson / O'Reilly Media / 2014-4-10 / USD 49.99

This brain-friendly guide teaches you everything from JavaScript language fundamentals to advanced topics, including objects, functions, and the browser’s document object model. You won’t just be read......一起来看看 《Head First JavaScript Programming》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具