[英]Roll back dart-sdk in flutter cache
大約一年前,我寫了一個 flutter 應用程序。 它工作正常,我也能夠發布它進行測試。 在應用程序中,我使用了許多不同的包來執行不同的操作,例如:選擇文件、查看圖像等。我使用的最重要的 package 是
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 實時數據庫添加到應用程序中,只是為了“好玩”。 所以我包括了以下package:
firebase_database: ^9.0.4
但是在添加它之后,我的應用程序無法編譯,我看到消息建議我更新依賴的 package。 為了解決錯誤,我在另一個之后執行了一個 package。 最終,我最終將 android 版本更新到 32,安裝了 v32 構建工具和 sdk 以滿足依賴性問題。 我的應用程序已編譯,但當我運行應用程序時,tensorflow model 無法加載。 正是在這一點上,在查找錯誤消息后,我決定將 flutter 的最低版本增加到 2.12。 但后來看來,我必須用“遲到的”和其他我還沒有想出來並且不想花時間的東西來更新我的所有代碼。 所以,我決定做 git stash。 我原以為這會回滾所有內容,並且我將能夠恢復舊的工作 state 但由於某些奇怪的原因我無法編譯該應用程序。 這是我看到的錯誤之一:
/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 版本和其他我不想要的東西的版本。 我希望能夠再次編譯它,因為它是在所有更改之前編譯的。 我覺得這與以下幾點有關:
問:在所有這些更新之后,我如何回到舊的 state,我應該采取哪些其他步驟才能正確回滾?
更新我注意到 bin/cache/dart-sdk 有一個最近的時間戳。 當我運行升級時,似乎 flutter 可能已經更新了 dart 版本。 之后我找不到使用以前版本的 dart 的方法。 我試圖手動下載它並將其放在緩存中,但它沒有拾取它。 有沒有辦法強制 flutter 使用特定版本的 dart-sdk?
在我運行flutter upgrade
之后,dart-sdk 得到了更新。 要回滾它,我只需要運行flutter downgrade
,它就會自動回滾到上次安裝的版本。 出於某種原因,在谷歌上搜索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
以下是我在經歷上述過程后學到的一些東西:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.