flutter升級導致的舊項目的運行環境問題排查記錄
首先先明確下可以運行的大致的環境信息:
java17
gradle7.6.4
Flutter 3.24.5 ? channel stable ? https://github.com/flutter/flutter.git
Framework ? revision dec2ee5c1f (11 months ago) ? 2024-11-13 11:13:06 -0800
Engine ? revision a18df97ca5
Tools ? Dart 3.5.4 ? DevTools 2.37.3
開發IDE: VS Code
事情起因就是flutter在新項目使用時,如何你的flutter有最新版本了,
就會建議你更新,但是你如果通過flutter upgrade命令進行更新后,
因flutter sdk不同版本會有語法改動,就會導致舊項目構建失敗或啟動不起來。
這時就需要排查構建工具(如Gradle)、JDK、Flutter、Dart、依賴庫版本等。
問題一:Error: A value of type 'CardThemeData' can't be assigned to a variable of type 'CardTheme'.
Flutter/PubCache/hosted/pub.flutter-io.cn/getwidget-4.0.0/lib/components/card/gf_card.dart:118:43: Error: A value of type 'CardThemeData' can't be assigned to a variable of type 'CardTheme'.
- 'CardThemeData' is from 'package:flutter/src/material/card_theme.dart' ('Flutter/SDK/flutter_windows_3.27.1-stable/flutter/packages/flutter/lib/src/material/card_theme.dart').
- 'CardTheme' is from 'package:flutter/src/material/card_theme.dart' ('Flutter/SDK/flutter_windows_3.27.1-stable/flutter/packages/flutter/lib/src/material/card_theme.dart').
final CardTheme cardTheme = CardTheme.of(context);
^
Target kernel_snapshot_program failed: Exception

這是由于flutter版本升級了,第三方庫getwidget庫不兼容新版本的語法導致的問題。
解決方法:降級Flutter版本或者升級getwidget庫版本。
問題二:VS Code配置項目的開發環境
打開設置頁面:文件 -> 首選項 -> 設置
配置Flutter SDK位置:

點擊在settings.json中編輯后,
在打開的json文件里,添加上自己的sdk目錄,如
{
...,
"java.import.gradle.java.home": "C:\\JDK\\OracleJDK\\jdk-17.0.2",
"java.home": "C:\\JDK\\OracleJDK\\jdk-17.0.2",
"dart.flutterSdkPath": "E:\\Flutter\\SDK\\flutter_windows_3.24.5-stable\\flutter"
}
建議使用Android Studio/jbr的Java sdk,省去額外安裝 JDK 的麻煩,又能保證與 Android 構建工具鏈完全兼容。
如:"java.import.gradle.java.home": "C:/Program Files/Android/Android Studio/jbr"
附錄
復制請注明出處,在世界中掙扎的灰太狼

浙公網安備 33010602011771號