Flutter - Packages管理

2,786 阅读2分钟

依赖管理

在原生开发中,Android使用Gradle来管理依赖,iOSCocoapodsCarthage来管理依赖。Flutter使用配置文件pubspec.yaml(位于项目根目录)来管理第三方依赖Package。

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

特别注意的是,日常开发中,yaml文件每次编辑要注意层级空格,有时候明明是复制过来的,但是因为多缩进了一个空格,就报错了

依赖来源

1. Pub仓库

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

dependencies:
  # 网络包
  http: 0.12.1

2. git仓库

  1. 在git仓库根目录
dependencies:
  pkg1:
    git:
      url: git://github.com/xxx/pkg1.git //在git仓库根目录
  1. 不在git仓库的根目录
dependencies:
  package1:
    git:
      url: git://github.com/flutter/packages.git
      path: packages/package1 //不在git仓库的根目录

3. 本地包

dependencies:
    pkg1:
        path: ../../code/pkg1 //本地路径

安装使用

1.添加依赖

打开 pubspec.yaml文件,然后在dependencies(Project - pubspec.yaml - dependencies)下添加http(网络请求pub):

dependencies:
  # 网络包
  http: 0.12.1

2.安装依赖

  1. 方法一: 在 terminal中: 运行 flutter packages get
  2. 方法二: 在 IntelliJ/AS IDE中: 点击pubspec.yaml文件顶部的Packages Get

3.导入 import使用

文件中导入 对应包,其中as相当于取别名,防止方法名冲突
import 'package:http/http.dart' as http;

4.升级依赖包

如果修改了pubspec.yaml文件,或者只想更新应用依赖的包(不包括Flutter SDK),使用以下命令:

//获取pubspec.yaml文件中列出的所有依赖包
flutter packages get  
//获取pubspec.yaml文件中列出的所有依赖包的最新版本,拿到版本号后,修改pubspec.yaml文件,再次 flutter packages get 即可
flutter packages upgrade 

版本控制

dependencies:
  # 指定版本
  xxPlugin: 0.12.1
  
  # 指定一个最小和最大的版本号
  xxPlugin: '>=0.1.2 <0.2.0'
  
  #限定版本  '^0.1.2' //大版本不变的区间写法,相当于'>=0.1.2 <0.2.0'
  xxPlugin: ^0.1.2
  
  #任意版本
  xxPlugin: any
  
  #  >3.0.9
  xxPlugin: '>3.0.9'//注意有引号

关于 ^请参考 caret 语法

环境控制

//这部分是生产环境,里面的Package会在发包时被一起打包
//项目的第三方插件Package
dependencies:
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.3

  xxPlugin: ^3.0.9

//这部分是开发环境,发包时不会被打包,仅仅在开发时用
dev_dependencies:
  flutter_test:
    sdk: flutter
  xxPlugin: ^3.0.9   

本节参考 Flutter开发- flutter的pub包管理