(二十六)-pubspec.yaml 文件介绍
在Flutter中有一个至关重要的文件,它就是pubspec.yaml文件,它是Flutter项目的配置文件;其作用类似于Node.js中的package.json,或者Android中的Gradle文件;
pubspec.yaml 文件位置
我们创建一个新的Flutter工程,其配置文件pubspec.yaml文件就位于根目录,如下图所示:

pubspec.yaml 默认配置
在新工程中,pubspec.yaml中的默认配置,去掉注释部分,其配置内容如下:
name: flutter_demo
description: A new Flutter project.
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^1.0.0
flutter:
uses-material-design: true
配置项介绍
name
此属性表示包名 (package name),此属性在整个配置中扮演者极其重要的角色,引入其他我么你自己写的文件时,将会使用次报名,比如: 当name配置如下时:
name: flutter_demo;
我们在导入其他文件时,就需要使用如下方式:
import "package:flutter_demo/listview_demo/listview_demo.dart";
如果我们将name的配置修改如下:
name: flutter_app;
那么,我们在导入文件时,引入的import也要做相应的修改:
import "package:flutter_app/listview_demo/listview_demo.dart";
需要注意的是,如果我们开发了一个
Flutter插件并对外发布,那么在pub.dev网站上,此属性将会作为标题显示,他人使用此插件时,引入也需要使用到此属性;

description
该属性是一个可选配置项,是对当前Flutter工程项目的介绍,作为插件发布时,也会显示在pub.dev上边,位置如下:

publish_to
此属性意为包发布到哪里去?
none:表示此包不发布;- 也可以指定发布的服务器;根据注释可以看到,如果删除此项配置,那么默认发布到
pub.dev
version
此属性表示当前工程的版本,分为应用程序的版本和内部版本号,格式为x.x.x+x,比如1.0.0+1,称为语义版本号;
+号前面的叫做version number;+号后面的叫做build number;
在Flutter工程中的andioid/app目录下的文件build.gradle中有如下配置:


其中version number对应versionName;build number对应versionCode;
environment
此属性下可以配置Flutter和Dart版本,在我们初始化项目之后,此属性下配置的sdk是一个范围值,表示的是Dart版本号,比如:
environment: sdk: ">=2.12.0 <3.0.0";
表示,当前工程兼容版本号大于等于2.12.0并且小于3.0.0的Dart版本的语法;
我们也可以手动添加上Flutter的版本号,比如:
environment: sdk: ">=2.12.0 <3.0.0";
flutter: "1.22.0";
dependencies
此属性下,一般添加我们用到的第三方的sdk,默认配置如下:
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
sdk: flutter意为默认获取flutter的最新版本,也就是我们机器上的flutter版本,我们也可以在此处添加version来指定flutter的版本;
dependencies: flutter: sdk: flutter;
version: "2.5.3";
cupertino_icons:给应用程序添加Cupertino图标的,一般用于iOS;
我们在之前的文章中,介绍过http发送网络请求的情况,我们也是在此处配置的http,如下:
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
http: ^0.13.4
关于这些第三方的版本号有以下几种写法:
不指定/any:这个时候,默认加载最新的版本;但是一般我们不推荐这样写,因为版本的变化可能会引起调用方式发生变化,导致项目编译出错;x.y.z:明确指定使用某一个版本号;<=x.y.z/<x.y.z:使用小于或者小于等于某一个版本的包,这种方式,版本号需要加引号;>=x.y.z <x.y.z:指定使用某一个区间的版本,这种方式,版本号需要加引号;^x.y.z:此种方式最为常见,也是比较推荐使用的方式。意为在大版本不变的情况下,使用最新的小版本;例如:^2.12.0相当于>=2.12.0 <3.0.0;
dev_dependencies
该配置项与dependencies的配置基本相似,都是配置应用程序所依赖的包;
不同的是,dependencies下配置的依赖包会被编译到项目中,而dev_dependencies配置的仅仅是运行期间的包;
flutter
此配置下一般是Flutter相关的配置;
uses-material-design: true
上边的默认配置意思是,确保我们的应用程序中包含Material Icons字体,以使我们能够使用material Icons类中的图标;
我们当资源的配置也是在这个配置下进行设置:
assets:配置图片;fonts:配置字体;plugin:该配置只存在于插件项目中,用来配置适配的平台,一般不要修改;如需添加新平台,直接添加即可;
需要注意的是,此文件中的配置一定要特别注意格式与缩进,否则配置将可能无法生效;
