记录一次 Flutter 项目升级 3.32.8 过程
视频
前言
本文记录了在升级 Woo2025 项目到 Flutter SDK 3.32.8 过程中遇到的问题及解决方案,为开发者提供实用的经验分享。
项目代码是我的课程代码 电商woo2025。
正文
Android Studio 环境
https://developer.android.com/studio?hl=zh-cn
下载最新的 android studio
最新的 SDK 36
XCode 环境
Flutter SDK 稳定版
https://docs.flutter.dev/install/archive
选择稳定版本
可以用 fvm 进行管理
升级依赖包
检查可升级包
flutter pub outdated
输出
❯ flutter pub outdated
Showing outdated packages.
[*] indicates versions that are not the latest available.
Package Name Current Upgradable Resolvable Latest
direct dependencies:
adaptive_theme *3.7.0 - 3.7.1+2 3.7.1+2
carousel_slider *5.0.0 - 5.1.1 5.1.1
dio *5.7.0 - 5.9.0 5.9.0
flutter_picker_plus *1.3.0 - 1.5.2 1.5.2
flutter_svg *2.0.17 - 2.2.0 2.2.0
get *4.6.6 - 4.7.2 4.7.2
intl *0.19.0 - 0.20.2 0.20.2
package_info_plus *8.1.3 - 8.3.1 8.3.1
permission_handler *11.3.1 - 12.0.1 12.0.1
shared_preferences *2.3.5 - 2.5.3 2.5.3
wechat_assets_picker *9.4.2 - 9.8.0 9.8.0
wechat_camera_picker *4.3.6 - 4.4.0 4.4.0
dev_dependencies:
flutter_lints *4.0.0 - 6.0.0 6.0.0
flutter_native_splash *2.4.2 - 2.4.6 2.4.6
icons_launcher *3.0.0 - 3.0.1 3.0.1
transitive dependencies:
args *2.6.0 - 2.7.0 2.7.0
asn1lib *1.5.8 - 1.6.5 1.6.5
async *2.11.0 - 2.13.0 2.13.0
camera *0.10.6 - *0.10.6 0.11.2
camera_android *0.10.9+17 - 0.10.10+5 0.10.10+5
camera_avfoundation *0.9.17+6 - 0.9.21+1 0.9.21+1
camera_platform_interface *2.8.0 - 2.10.0 2.10.0
characters *1.3.0 - *1.4.0 1.4.1
clock *1.1.1 - 1.1.2 1.1.2
collection *1.19.0 - 1.19.1 1.19.1
dio_web_adapter *2.0.0 - 2.1.1 2.1.1
extended_image *8.3.1 - 10.0.1 10.0.1
extended_image_library *4.0.5 - 5.0.1 5.0.1
ffi *2.1.3 - 2.1.4 2.1.4
flutter_plugin_android_lifecycle *2.0.24 - 2.0.29 2.0.29
flutter_spinkit *5.2.1 - 5.2.2 5.2.2
html *0.15.5 - 0.15.6 0.15.6
http *1.2.2 - 1.5.0 1.5.0
http_parser *4.0.2 - 4.1.2 4.1.2
js *0.7.1 - 0.7.2 0.7.2 (discontinued)
material_color_utilities *0.11.1 - *0.11.1 0.13.0
meta *1.15.0 - *1.16.0 1.17.0
mime - - 2.0.0 2.0.0
package_info_plus_platform_interface *3.0.2 - 3.2.1 3.2.1
path *1.9.0 - 1.9.1 1.9.1
path_provider_android *2.2.12 - 2.2.17 2.2.17
path_provider_foundation *2.4.0 - 2.4.2 2.4.2
permission_handler_android *12.0.13 - 13.0.1 13.0.1
permission_handler_apple *9.4.5 - 9.4.7 9.4.7
permission_handler_platform_interface *4.2.3 - 4.3.0 4.3.0
petitparser *6.0.2 - *6.1.0 7.0.1
photo_manager *3.6.3 - 3.7.1 3.7.1
pointycastle *3.9.1 - *3.9.1 4.0.0
provider *6.1.2 - 6.1.5+1 6.1.5+1
sensors_plus *5.0.1 - 6.1.2 6.1.2
sensors_plus_platform_interface *1.2.0 - 2.0.1 2.0.1
shared_preferences_android *2.4.2 - 2.4.11 2.4.11
shared_preferences_foundation *2.5.3 - 2.5.4 2.5.4
shared_preferences_web *2.4.2 - 2.4.3 2.4.3
source_span *1.10.0 - 1.10.1 1.10.1
sqflite *2.4.1 - 2.4.2 2.4.2
sqflite_android *2.4.0 - *2.4.1 2.4.2+2
sqflite_common *2.5.4+5 - 2.5.6 2.5.6
sqflite_darwin *2.4.1 - 2.4.2 2.4.2
string_scanner *1.3.0 - 1.4.1 1.4.1
synchronized *3.3.0+3 - 3.4.0 3.4.0
term_glyph *1.2.1 - 1.2.2 1.2.2
vector_graphics *1.1.14 - 1.1.19 1.1.19
vector_graphics_codec *1.1.12 - 1.1.13 1.1.13
vector_graphics_compiler *1.1.15 - 1.1.18 1.1.18
vector_math *2.1.4 - *2.1.4 2.2.0
video_player *2.9.2 - 2.10.0 2.10.0
video_player_android *2.7.16 - 2.8.12 2.8.12
video_player_avfoundation *2.6.5 - 2.8.4 2.8.4
video_player_platform_interface *6.2.3 - 6.4.0 6.4.0
video_player_web *2.3.3 - 2.4.0 2.4.0
web *1.1.0 - 1.1.1 1.1.1
wechat_picker_library *1.0.5 - 1.0.7 1.0.7
win32 *5.8.0 - 5.14.0 5.14.0
xml *6.5.0 - *6.5.0 6.6.1
transitive dev_dependencies:
archive *3.6.1 - 4.0.7 4.0.7
boolean_selector *2.1.1 - 2.1.2 2.1.2
fake_async *1.3.1 - 1.3.3 1.3.3
image *4.3.0 - 4.5.4 4.5.4
leak_tracker *10.0.7 - *10.0.9 11.0.1
leak_tracker_flutter_testing *3.0.8 - *3.0.9 3.0.10
leak_tracker_testing *3.0.1 - *3.0.1 3.0.2
lints *4.0.0 - 6.0.0 6.0.0
matcher *0.12.16+1 - 0.12.17 0.12.17
posix - - 6.0.3 6.0.3
stack_trace *1.12.0 - 1.12.1 1.12.1
stream_channel *2.1.2 - 2.1.4 2.1.4
test_api *0.7.3 - *0.7.4 0.7.7
vm_service *14.3.0 - *15.0.0 15.0.2
yaml *3.1.2 - 3.1.3 3.1.3
No resolution was found. Try running `flutter pub upgrade --dry-run` to explore why.
js
Package js has been discontinued. See https://dart.dev/go/package-discontinue
更新依赖包
flutter pub upgrade
推荐手动更新
清理重构
flutter clean
flutter pub get
flutter run
处理包冲突,一般都是 sdk dart 版本不适配造成的。
intl 0.20.2 升级
[flutter_woo_course_2025_release_3_27] flutter pub get --no-example
Resolving dependencies...
Note: intl is pinned to version 0.20.2 by flutter_localizations from the flutter SDK.
See https://dart.dev/go/sdk-version-pinning for details.
Because flutter_woo_course_2025 depends on flutter_localizations from sdk which depends on intl 0.20.2, intl 0.20.2 is required.
So, because flutter_woo_course_2025 depends on intl ^0.19.0, version solving failed.
You can try the following suggestion to make the pubspec resolve:
* Try upgrading your constraint on intl: flutter pub add intl:^0.20.2
Failed to update packages.
exit code 1
提高 android 兼容性
编辑 android/app/build.gradle
android {
compileSdk = 36
ndkVersion = "27.0.12077973"
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
}
defaultConfig {
applicationId "com.ducafecat.woo2025"
minSdk = 26 //flutter.minSdkVersion
targetSdk = 34 //flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}
compileSdk 编译版本,我们设置到最新的 36
ndkVersion 是我们 sdk tools 中安装的版本
minSdk 最小版本 26
targetSdk 最大版本,我们不要太大也不要小小,主流版本就行,否则可能会造成安装在客户机上,表现出来各种奇怪的问题(图片裂开、错位、文字不换行等等)。
小结
希望我这次升级时候遇到的几个点对大家有帮助。
感谢阅读本文
如果有什么建议,请在评论中让我知道。我很乐意改进。
猫哥 APP
flutter 学习路径
- Flutter 优秀插件推荐
- Flutter 基础篇1 - Dart 语言学习
- Flutter 基础篇2 - 快速上手
- Flutter 实战1 - Getx Woo 电商APP
- Flutter 实战2 - 上架指南 Apple Store、Google Play
- Flutter 基础篇3 - 仿微信朋友圈
- Flutter 实战3 - 腾讯即时通讯 第一篇
- Flutter 实战4 - 腾讯即时通讯 第二篇
© 猫哥 ducafecat.com
end