为什么 flutter `pub get` 会改变 pubspec.lock?

Sat*_*aka 12 dart dart-pub flutter

当我执行flutter pub getor时pub get,这些变化pubspec.lock有时如下所示。

sdks:
-  dart: ">=2.10.2 <=2.11.0-213.1.beta"
+  dart: ">=2.10.2 <2.11.0"
Run Code Online (Sandbox Code Playgroud)

我认为pub get几乎等于 CocoaPods 命令pod install,它不修改锁定文件。
为什么pub get要更新锁定文件?

小智 1

参考这里的官方文档

\n

这就是答案:

\n

pub get获取新的依赖项时,它会写入一个锁定文件以确保将来的获取将使用这些依赖项的相同版本。应用程序包应将锁定文件签入源代码管理;这确保了应用程序在部署到生产环境时将为所有开发人员使用所有依赖项的完全相同版本。不过,库包不应签入lockfile,因为它们\xe2\x80\x99 预计可与一系列依赖项版本一起使用。

\n

如果锁定文件已存在,则 pub get 使用锁定在其中的依赖项版本(如果可能)。如果依赖项被\xe2\x80\x99t 锁定,则 pub 会获取满足所有版本约束的该依赖项的最新版本。

\n

  • 我可以确认OP所说的;(至少有时)“pub get”会更改现有的 pubspec.lock。我构建了一个项目,并在 _existing_ 锁定文件中更改了大约 12 个 dep 版本。引用的文档暗示这不会发生,对吗?它说:“[现有的锁定文件]确保应用程序将使用所有依赖项的完全相同的版本......”如果构建更改了锁定文件,则不同的构建将使用不同的依赖项。IOW,这些文档即使没有错误,也似乎具有误导性。 (12认同)