【问题标题】:Roll back dart-sdk in flutter cache在颤振缓存中回滚 dart-sdk
【发布时间】:2022-01-03 06:52:51
【问题描述】:

大约一年前,我写了一个 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 以满足依赖性问题。我的应用程序已编译,但当我运行应用程序时,张量流模型无法加载。正是在这一点上,在查找错误消息后,我决定将 Flutter 的最低版本增加到 2.12。但后来看来,我必须用“迟到”和其他我还没有想出来并且不想花时间的东西来更新我的所有代码。所以,我决定做 git stash。我原以为这会回滚所有内容,并且可以恢复旧的工作状态,但是由于某些奇怪的原因,我无法编译该应用程序。这是我看到的错误之一:

/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 版本(我现在已将其重置为之前的版本,但我不确定 dart 的版本)
  • android 构建工具。虽然gradle文件中指定的版本已经恢复到之前的版本但是我还没有卸载v32。
  • 还是别的什么?

问。在所有这些更新之后如何恢复到旧状态,我应该采取哪些其他步骤才能正确回滚?

更新 我注意到 bin/cache/dart-sdk 有一个最近的时间戳。看来,当我运行升级时,颤振可能已经更新了飞镖版本。之后我找不到使用以前版本的 dart 的方法。我试图手动下载它并将其放在缓存中,但它没有拾取它。有没有办法强制flutter使用特定版本的dart-sdk?

【问题讨论】:

    标签: android flutter flutter-dependencies


    【解决方案1】:

    在我运行flutter upgrade 之后,dart-sdk 得到了更新。要回滚它,我只需要运行flutter downgrade,它就会自动回滚到最后安装的版本。出于某种原因,在谷歌上搜索 flutter downgrade 并不能得到明确的答案或颤振文档。有一些答案是指提供一个版本号,但就我而言,我不记得我正在使用的版本。在 Flutter cli 的文档中,该命令有一行描述:

    downgrade   flutter downgrade   Downgrade Flutter to the last active version for the current channel.
    

    https://docs.flutter.dev/reference/flutter-cli

    以下是我在经历了上述之后学到的一些东西:

    1. flutter 降级不接受多篇文章中建议的版本号参数。
    2. flutter 附带了一个紧密耦合的 dart 版本。用户无法改变这一点。
    3. flutter/bin/cache/dart-sdk -> 这是flutters dart-sdk的安装位置。我尝试替换它,但颤振会自动下载它需要的版本。
    4. 如果您正在处理的代码库最后一次被触及是在 2021 年初(一年前),那么如果您想更新 Flutter,请准备好面对几个重大更改并找到不再受支持的软件包的替代方案。李>
    5. 首选由 Flutter 或公司创建的包,因为它们有更多机会保持最新。

    【讨论】:

      猜你喜欢
      • 2019-09-17
      • 2021-05-18
      • 2021-02-17
      • 1970-01-01
      • 2022-06-17
      • 2022-08-03
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      相关资源
      最近更新 更多