Flutter | 包管理

2022-02-11 13:57:14 浏览数 (1)

​ 在日常开发中,很多时候需要用到第三方的 SDK ,这些 SDK 可能会被很多个项目用到,因此可以将这些代码单独抽到一个模块中,使用的时候只需要集成对于的模块即可,

​ 在 Java 中,模块会被打成一个 jar 包

​ 在 Android 中,模块会被打成一个·aar 包

​ 一个 app 在开发的过程中可能会依赖非常多的包,这些包通常都会出现交叉依赖,版本依赖等,如果需要手动管理,则会非常麻烦,因此,各种编程语言的官方都会提供一下包管理工具,如:

​ 在 Android 中提供了 Gradle 来管理依赖

​ 在 IOS 中用 Cocoapods 或者 Carthage 来管理依赖

​ 而在 Flultter 中,使用的是 yaml 文件作为其配置文件,全名 pubspec.yaml

pubspec.yaml

代码语言:javascript复制
name: flutter_study
description: A new Flutter application.

publish_to: 'none'

version: 1.0.0 1

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^1.0.0

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true
复制代码
  • name :应用或者包名称
  • description:应用或包的描述,简介
  • version:应用或包的版本号
  • environment:环境版本
  • dependencies:应用或包导入的其他包或者插件
  • dev_dependencies:开发环境依赖的工具包(而不是 flutter 本身依赖的包)
  • flutter:flutter 相关配置选项

Pub 仓库

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

示例:

​ 在 Pub 上找到一个随机字符串的 widget,并确定最新版本号和是否支持 flutter,

  • 添加依赖
代码语言:javascript复制
dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.0
  english_words : ^3.1.5
  • 同步代码 pub Get
  • dev_dependencies dev_dependencies 的依赖包只是作为开发阶段的一个工具包,主要是用于帮助我们提高开发,测试效率,等,例如 flutter 自动化测试等 dependencies 会将依赖包作为 app 源码的一部分并参与编译,生成最后的安装包
  • 使用 english_words 包生成随机字符串
代码语言:javascript复制
class RandomWordsWidget extends StatelessWidget {
  final wordPair = new WordPair.random();

  @override
  Widget build(BuildContext context) {
    return Padding(
        padding: const EdgeInsets.all(8.0),
        child: new Text(wordPair.toString()));
  }
}

将上面的 widget 添加到界面中

  • 点击热重载按钮,每次都会随机生成不同的单词

其他依赖方式

  • 依赖本地包
代码语言:javascript复制
dependencies:
    pkg1:
        path: ../../code/pkg1

如果我们真正本地开发一个包,名字为 pkg1,可以通过上面的方式依赖,路径可以相对,也可以绝对

  • 依赖 git
代码语言:javascript复制
//git方式
dependencies:
  flutter_easyrefresh:
    git:
      url: git://github.com/xuelongqy/flutter_easyrefresh.git

flutter_easyrefresh:依赖的项目名称

代码语言:javascript复制
dependencies:
  kittens:
    git: git@github.com:munificent/kittens.git
    path: flutterpackagename
 

依赖git仓库下的某个flutter package

Flutter 项目目录结构

  • android flutter 与 android 原生交互的一些代码
  • ios flutter 与 ios 原生交互的一些代码
  • lib 这里存放的是 dart 语言编写的代码,并且是项目中最核心的代码,我们主要编写的代码就是在这个文件夹
  • pubspec.yaml 这里是配置依赖项的文件,例如远程的 pub 仓库,git 仓库等

参考自Flutter 实战

0 人点赞