pubspec.yaml:是依赖版本的第一个配置文件;
pubspec.lock: 是依赖版本的第二个配置文件;作用是根据pubspec.yaml配置生成的具体依赖版本;
为什么会有2个版本依赖配置呢?
举个例子:
1、pubspec.yaml中的这个插件为:
sqflite: ^2.2.2
2、执行flutter pub get,对应pubspec.lock为:
sqflite:
dependency: "direct main"
description:
name: sqflite
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.8+4"
3、这个时候出现的版本2.2.8+4和实际配置的2.2.2不一样,原因是就使用^导致,它的作用代表:2.2.2——3.0.0之间的版本,只要服务器有更新,每次你执行flutter pub get命令的时候,都会实时更新,这样可能会引发2次编译版本依赖不一样,导致不可预知的错误。
扫描二维码关注公众号,回复:
15576260 查看本文章
4、解决方法:
可以pubspec.yaml写死配置:sqflite: 2.2.2,这样就不会自动更新版本,以后有需要再手动更新。
对应的pubspec.lock为:
sqflite: dependency: "direct main" description: name: sqflite url: "https://pub.flutter-io.cn" source: hosted version: "2.2.2"
5、关于^的作用说明:
^0.0.1:0.0.1——0.0.2之间的版本;
^0.1.0:0.1.0——0.2.0之间的版本;
^1.0.0:1.0.0——2.0.0之间的版本;
6、pubspec.lock需要加到.gitignore文件中去,不需要提交到服务,因为每次执行flutter pub get的时候会自动生成。如果生成的名称没有_ios结尾的,只有_foundation,则需要把本地的fluuter sdk升级到3.0版本以上,否则在studio上运行会报错,如下图: