在日常开发中,很多时候需要用到第三方的 SDK ,这些 SDK 可能会被很多个项目用到,因此可以将这些代码单独抽到一个模块中,使用的时候只需要集成对于的模块即可,
在 Java 中,模块会被打成一个 jar 包
在 Android 中,模块会被打成一个· aar 包
一个 app 在开发的过程中可能会依赖非常多的包,这些包通常都会出现交叉依赖,版本依赖等,如果需要手动管理,则会非常麻烦,因此,各种编程语言的官方都会提供一下包管理工具,如:
在 Android 中提供了 Gradle 来管理依赖
在 IOS 中用 Cocoapods 或者 Carthage 来管理依赖
而在 Flultter 中,使用的是 yaml 文件作为其配置文件,全名 pubspec.yaml
pubspec.yaml
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,
添加依赖
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 包生成随机字符串
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 添加到界面中
点击热重载按钮,每次都会随机生成不同的单词
其他依赖方式
依赖本地包
dependencies: pkg1: path: ../../code/pkg1
如果我们真正本地开发一个包,名字为 pkg1,可以通过上面的方式依赖,路径可以相对,也可以绝对
依赖 git
//git方式 dependencies: flutter_easyrefresh: git: url: git://github.com/xuelongqy/flutter_easyrefresh.git
flutter_easyrefresh:依赖的项目名称 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 仓库等