如何自动升级 Flutter 依赖

Posted

技术标签:

【中文标题】如何自动升级 Flutter 依赖【英文标题】:How to automatically upgrade Flutter dependencies 【发布时间】:2020-01-05 21:52:45 【问题描述】:

我的 Flutter 项目在版本 ^2.0.1 上有一个依赖项 flutter_dotenv,我想自动升级到新版本 ^2.0.2

我正在运行以下命令来升级它:

flutter pub upgrade

参考:Upgrading packages only

更新到所有依赖项的最新兼容版本 在 pubspec.yaml 文件中列出,使用升级命令:

颤振酒吧升级

然而似乎什么也没发生。 pubspec.yaml 没有改变,控制台输出也没有提到新版本(这就足够了)。

我的pubspec.yaml 看起来像这样:

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  flutter_dotenv: ^2.0.1
  cupertino_icons: ^0.1.2

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true

【问题讨论】:

【参考方案1】:

上述方法有效,但您可以使用此命令:

flutter pub upgrade --major-versions

它将更新您的所有依赖项。

还要检查“如何正确添加依赖项以避免“版本解决失败”错误

参考这个: https://***.com/a/67517680/13500457

我希望它能清除一切,编码愉快!

【讨论】:

这完全做到了! 这应该被接受为答案,谢谢!【参考方案2】:

Flutter 会自动升级基于 semantic versioning 的非破坏性更改。您不希望自动进行重大更改。更新反映在 pubspec.lock 中,而不是 pubspec.yaml

有几个 IDE 插件可以帮助您更轻松地升级软件包,而不是在 pub.dev 上一一查找。

android 工作室

Flutter Pub Version Checker

此插件会突出显示您在 pubspec.yaml 中拥有的所有已过期的依赖项,以便您可以根据需要选择更新它们。

Visual Studio 代码

Pubspec Assist

这个插件使添加或更新依赖项变得超级简单,而无需转到pub.dev,但您仍然需要一次检查一个。

【讨论】:

我不同意“你不希望破坏性的改变是自动的”,我更倾向于认为“你不希望任何改变都是自动的”,基于此引入问题的可能性令人难以置信, WDYT? @DanielGomezRico,如果您不希望自动进行任何更改,则可以从版本号前面删除^。但是,只要包开发人员遵循语义版本控制,留下^ 就可以了,因为根据定义不会有重大更改。但即使有重大更改,您仍然会在发布应用程序之前对其进行测试。以我的经验,我只有一次经历,一个小的改变破坏了一些东西。 (这就是 Dart 2.8 本身。) 对我来说,痛苦来自一些 2 或 3 年前制作的旧项目,并且让它们重新编译非常可怕,找到哪个依赖项(有一个类似 30 个依赖项的列表) ***.com/a/66759292/13500457 当你使用你提到的方法时,当你移动光标并按 alt + enter 到所有依赖项时,它会花费一些时间,所以最好使用这个命令“flutter pub upgrade --major-versions ”也不会出现“由于 SDK 版本不兼容导致的版本解决错误”,因此请使用此链接了解详细信息。编码愉快! @Suragch 很抱歉评论一个旧答案,但我有一个疑问:当您说“Flutter 根据语义版本控制自动升级非破坏性更改。”时,您的意思是,当您使用 flutter pub upgrade命令?【参考方案3】:

运行pub 永远不会改变pubspec.yaml。但是,它可能会解决与指定的“基本”版本不同的版本 - 前导 caret 允许 pub 解决:

保证向后兼容指定版本的所有版本的范围

签入pubspec.lock文件,你可能会看到pub已经解决到version: "2.0.2"

【讨论】:

所以OP“如何自动升级Flutter依赖项”的答案是......没有办法? @adrianvintu 是的,请检查我自己的答案。【参考方案4】:

声明依赖版本有两种方式:

    Caret syntax - 它保证向后兼容性。示例:^1.3.0 Traditional syntax - 极大的灵活性,多种控制选项。示例:&gt;=1.2.3

行为类似于带有 Node.js 依赖管理的package.json

您选择在pubspec.yaml 中声明依赖项的方式将定义实际依赖项 将如何在pubspec.lock 文件中定义。

【讨论】:

以上是关于如何自动升级 Flutter 依赖的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VSCode/flutter 中升级包?

flutter sdk升级 kotlin升级 gradle升级 使用flutter upgrade命令 以及依赖的各项配置更新 呕心沥血 踩坑无数 专治疑难杂症

flutter sdk升级 kotlin升级 gradle升级 使用flutter upgrade命令 以及依赖的各项配置更新 呕心沥血 踩坑无数 专治疑难杂症

Flutter 升级空安全攻略

Docker+Jenkins打造自动化测试以及部署升级环境

Flutter 2.0 升级,pub 因无意义的依赖行为而失败