回滚 flutter 缓存中的 dart-sdk
Roll back dart-sdk in flutter cache
大约一年前我写了一个 flutter 应用程序。它工作正常,我也能够发布它进行测试。在应用程序中,我使用了许多不同的包来执行不同的操作,例如:选择文件、查看图像等。我使用的最重要的包是
tflite_flutter: 0.5.0
tflite_flutter_helper: 0.1.2
除上述之外,我的应用程序中还有以下内容:
environment:
sdk: ">=2.7.0 <3.0.0"
并在 build.gradle 文件中:
compileSdkVersion 29
buildToolsVersion "29.0.2"
...
targetSdkVersion 29
最近我决定将 Firebase 实时数据库添加到应用程序中只是为了“好玩”。所以我包含了以下包:
firebase_database: ^9.0.4
但添加后我的应用程序编译失败,我看到消息提示我更新依赖包。为了解决错误,我一个接一个地执行了这个包。最终,我最终将 android 版本更新为 32,安装了 v32 构建工具和 sdk 来解决依赖性问题。我的应用程序已编译,但是当我 运行 应用程序时,tensorflow 模型无法加载。正是在这一点上,在查找错误消息后,我决定将 flutter 的最低版本提高到 2.12。但后来看来我必须用“迟到”和其他我还没有弄清楚并且不想花时间的东西来更新我的所有代码。所以,我决定做 git 藏起来。我本以为这会回滚所有内容,我将能够恢复旧的工作状态,但由于某些奇怪的原因,我无法编译该应用程序。这是我看到的错误之一:
/apps/flutter/.pub-cache/hosted/pub.dartlang.org/filesystem_picker-1.0.3/lib/src/picker_page.dart:187:63: Error: The getter 'title' isn't defined for the class 'TextTheme'. - 'TextTheme' is from 'package:flutter/src/material/text_theme.dart' ('/C:/apps/flutter/packages/flutter/lib/src/material/text_theme.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'title'.
color: AppBarTheme.of(context).textTheme?.title?.color ??
我能够挖掘出的所有信息都指向我更新 flutter 版本和其他我不想要的版本。我希望能够在所有更改之前再次编译它。我感觉跟以下几点有关:
- flutter 版本(我现在已经重置为之前的版本,但我不确定 dart 的版本)
- android 构建工具。尽管gradle文件中指定的版本已恢复到之前的版本,但我还没有卸载v32。
- 还是别的?
问。在所有这些更新之后我如何回到旧状态,我应该采取哪些其他步骤才能正确回滚?
更新
我注意到 bin/cache/dart-sdk 有一个最近的时间戳。看来我 运行 升级时 flutter 可能更新了 dart 版本。在那之后我找不到使用以前版本的飞镖的方法。我尝试手动下载它并将其放入缓存中,但它没有接收到它。有没有办法强制 flutter 使用特定版本的 dart-sdk?
dart-sdk 在我 运行 flutter upgrade
之后更新了。要回滚它,我只需要 运行 flutter downgrade
它就会自动回滚到上次安装的版本。出于某种原因,在 google 上搜索 flutter downgrade
不会导致明确的答案或 flutter 文档。有些答案是指提供一个版本号,但就我而言,我不记得我正在使用的版本。在 flutter cli 的文档中,对该命令有一行描述:
downgrade flutter downgrade Downgrade Flutter to the last active version for the current channel.
https://docs.flutter.dev/reference/flutter-cli
以下是我在完成上述操作后学到的一些东西:
- flutter 降级不接受多篇文章中建议的版本号参数。
- flutter 附带了紧耦合版本的 dart。用户无法更改。
- flutter/bin/cache/dart-sdk -> 这是flutters dart-sdk的安装位置。我尝试替换它,但 flutter 会自动下载它需要的版本。
- 如果您正在处理最后一次接触到 2021 年初(一年前)的代码库,那么如果您想更新 flutter,请准备好面对几个重大更改并寻找不再支持的包的替代品。
- 更喜欢由 flutter 或公司创建的包,因为它们有更多机会保持最新状态。
大约一年前我写了一个 flutter 应用程序。它工作正常,我也能够发布它进行测试。在应用程序中,我使用了许多不同的包来执行不同的操作,例如:选择文件、查看图像等。我使用的最重要的包是
tflite_flutter: 0.5.0
tflite_flutter_helper: 0.1.2
除上述之外,我的应用程序中还有以下内容:
environment:
sdk: ">=2.7.0 <3.0.0"
并在 build.gradle 文件中:
compileSdkVersion 29
buildToolsVersion "29.0.2"
...
targetSdkVersion 29
最近我决定将 Firebase 实时数据库添加到应用程序中只是为了“好玩”。所以我包含了以下包:
firebase_database: ^9.0.4
但添加后我的应用程序编译失败,我看到消息提示我更新依赖包。为了解决错误,我一个接一个地执行了这个包。最终,我最终将 android 版本更新为 32,安装了 v32 构建工具和 sdk 来解决依赖性问题。我的应用程序已编译,但是当我 运行 应用程序时,tensorflow 模型无法加载。正是在这一点上,在查找错误消息后,我决定将 flutter 的最低版本提高到 2.12。但后来看来我必须用“迟到”和其他我还没有弄清楚并且不想花时间的东西来更新我的所有代码。所以,我决定做 git 藏起来。我本以为这会回滚所有内容,我将能够恢复旧的工作状态,但由于某些奇怪的原因,我无法编译该应用程序。这是我看到的错误之一:
/apps/flutter/.pub-cache/hosted/pub.dartlang.org/filesystem_picker-1.0.3/lib/src/picker_page.dart:187:63: Error: The getter 'title' isn't defined for the class 'TextTheme'. - 'TextTheme' is from 'package:flutter/src/material/text_theme.dart' ('/C:/apps/flutter/packages/flutter/lib/src/material/text_theme.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'title'.
color: AppBarTheme.of(context).textTheme?.title?.color ??
我能够挖掘出的所有信息都指向我更新 flutter 版本和其他我不想要的版本。我希望能够在所有更改之前再次编译它。我感觉跟以下几点有关:
- flutter 版本(我现在已经重置为之前的版本,但我不确定 dart 的版本)
- android 构建工具。尽管gradle文件中指定的版本已恢复到之前的版本,但我还没有卸载v32。
- 还是别的?
问。在所有这些更新之后我如何回到旧状态,我应该采取哪些其他步骤才能正确回滚?
更新 我注意到 bin/cache/dart-sdk 有一个最近的时间戳。看来我 运行 升级时 flutter 可能更新了 dart 版本。在那之后我找不到使用以前版本的飞镖的方法。我尝试手动下载它并将其放入缓存中,但它没有接收到它。有没有办法强制 flutter 使用特定版本的 dart-sdk?
dart-sdk 在我 运行 flutter upgrade
之后更新了。要回滚它,我只需要 运行 flutter downgrade
它就会自动回滚到上次安装的版本。出于某种原因,在 google 上搜索 flutter downgrade
不会导致明确的答案或 flutter 文档。有些答案是指提供一个版本号,但就我而言,我不记得我正在使用的版本。在 flutter cli 的文档中,对该命令有一行描述:
downgrade flutter downgrade Downgrade Flutter to the last active version for the current channel.
https://docs.flutter.dev/reference/flutter-cli
以下是我在完成上述操作后学到的一些东西:
- flutter 降级不接受多篇文章中建议的版本号参数。
- flutter 附带了紧耦合版本的 dart。用户无法更改。
- flutter/bin/cache/dart-sdk -> 这是flutters dart-sdk的安装位置。我尝试替换它,但 flutter 会自动下载它需要的版本。
- 如果您正在处理最后一次接触到 2021 年初(一年前)的代码库,那么如果您想更新 flutter,请准备好面对几个重大更改并寻找不再支持的包的替代品。
- 更喜欢由 flutter 或公司创建的包,因为它们有更多机会保持最新状态。