Flutter从3.0.1升级到3.10.0后项目构建失败求解决方案
问题
将Flutter从3.0.1升级到3.10.0后,项目无法正常构建,调试控制台报错如下:
/C:/Users/USER/AppData/Local/Pub/Cache/hosted/pub.dev/form_builder_extra_fields-8.3.0/lib/src/fields/form_builder_cupertino_date_time_picker.dart:6:1: Error: 'DatePickerTheme' is imported from both 'package:flutter/src/material/date_picker_theme.dart' and 'package:flutter_datetime_picker_bdaya/src/datetime_picker_theme.dart'. import 'package:flutter_datetime_picker_bdaya/flutter_datetime_picker_bdaya.dart'; flutter_datetime_picker_bdaya.dart:1 ^^^^^^^^^^^^^^^ /C:/Users/USER/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_datetime_picker_bdaya-2.0.0/lib/flutter_datetime_picker_bdaya.dart:7:1: Error: 'DatePickerTheme' is imported from both 'package:flutter/src/material/date_picker_theme.dart' and 'package:flutter_datetime_picker_bdaya/src/datetime_picker_theme.dart'. import 'src/datetime_picker_theme.dart'; ^^^^^^^^^^^^^^^ /C:/Users/USER/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_datetime_picker_bdaya-2.0.0/lib/flutter_datetime_picker_bdaya.dart:200:31: Error: 'DatePickerTheme' is imported from both 'package:flutter/src/material/date_picker_theme.dart' and 'package:flutter_datetime_picker_bdaya/src/datetime_picker_theme.dart'. this.theme = theme ?? DatePickerTheme(), ^^^^^^^^^^^^^^^ /C:/Users/USER/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_chips_input-2.0.0/lib/src/chips_input.dart:87:7: Error: The non-abstract class 'ChipsInputState' is missing implementations for these members: - TextInputClient.didChangeInputControl - TextInputClient.insertContent - TextInputClient.performSelector Try to either - provide an implementation, - inherit an implementation from a superclass or mixin, - mark the class as abstract, or - provide a 'noSuchMethod' implementation. class ChipsInputState<T> extends State<ChipsInput<T>> ^^^^^^^^^^^^^^^ /D:/Flutter/flutter/packages/flutter/lib/src/services/text_input.dart:1158:8: Context: 'TextInputClient.didChangeInputControl' is defined here. void didChangeInputControl(TextInputControl? oldControl, TextInputControl? newControl) {} ^^^^^^^^^^^^^^^^^^^^^ /D:/Flutter/flutter/packages/flutter/lib/src/services/text_input.dart:1117:8: Context: 'TextInputClient.insertContent' is defined here. void insertContent(KeyboardInsertedContent content) {} ^^^^^^^^^^^^^ /D:/Flutter/flutter/packages/flutter/lib/src/services/text_input.dart:1179:8: Context: 'TextInputClient.performSelector' is defined here. void performSelector(String selectorName) {} ^^^^^^^^^^^^^^^ Target kernel_snapshot failed: Exception FAILURE: Build failed with an exception. * Where: Script 'D:\Flutter\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 1159 * What went wrong: Execution failed for task ':app:compileFlutterBuildDebug'. > Process 'command 'D:\Flutter\flutter\bin\flutter.bat'' finished with non-zero exit value 1 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 6s Exception: Gradle task assembleDebug failed with exit code 1
项目依赖包:
cupertino_icons: ^1.0.2 firebase_core_platform_interface: ^4.8.0 firebase_core: ^2.13.0 firebase_storage: ^11.2.1 file_picker: ^5.2.6 datetime_picker_formfield: firebase_messaging: ^14.6.1 overlay_support: ^2.0.1 cloud_firestore: ^4.7.1 firebase_auth: ^4.6.1 flutter_facebook_auth: intl: ^0.17.0 csc_picker: google_sign_in: image_picker: ^0.8.5+3 get: google_maps_flutter: ^2.2.0 flutter_native_splash: ^1.2.0 geolocator: flutter_map: flutter_map_marker_cluster: http: geocoding: ^2.1.0 flutter_polyline_points: ^1.0.0 map_location_picker: ^1.1.0
flutter doctor检查结果:
- [√] Flutter (Channel stable, 3.10.0, on Microsoft Windows [Version 10.0.19044.2965], locale en-US)
- [√] Windows Version (Installed version of Windows is version 10 or higher)
- [√] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc2)
- [√] Chrome - develop for the web
- [√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.0.0)
- [√] Android Studio (version 2021.2)
- [√] VS Code (version 1.78.2)
- [√] Connected device (4 available)
- [√] Network resources
已尝试清理项目、升级pub包和执行flutter pub cache repair,问题仍存在,寻求其他解决方案。
解决方案
1. 解决DatePickerTheme命名冲突
冲突源于flutter_datetime_picker_bdaya包与Flutter 3.10+内置组件重名,处理方式:
- 升级
form_builder_extra_fields到兼容Flutter 3.10的最新版本,新版本通常会修复这类命名冲突。 - 若升级后仍有问题,在
pubspec.yaml中用dependency_overrides强制指定flutter_datetime_picker_bdaya的最新兼容版本:dependency_overrides: flutter_datetime_picker_bdaya: ^2.1.0 # 替换为实际最新兼容版本
2. 解决ChipsInputState方法缺失问题
flutter_chips_input 2.0.0版本不兼容Flutter 3.10的TextInputClient接口变更,处理方式:
- 升级
flutter_chips_input到最新版本,新版本会实现新增的三个方法;若没有兼容版本,替换为功能类似的包(如flutter_tagging)。 - 临时修复:找到本地缓存的报错文件
C:/Users/USER/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_chips_input-2.0.0/lib/src/chips_input.dart,在ChipsInputState类中添加空实现:
注意:此方法仅为临时方案,下次@override void didChangeInputControl(TextInputControl? oldControl, TextInputControl? newControl) {} @override void insertContent(KeyboardInsertedContent content) {} @override void performSelector(String selectorName) {}flutter pub get会覆盖修改,优先推荐升级或替换包。
3. 补充操作
- 执行
flutter clean,删除pubspec.lock文件后再运行flutter pub get,确保所有依赖重新拉取兼容版本。 - 给所有未指定版本的依赖(如
datetime_picker_formfield、csc_picker)添加兼容Flutter 3.10的版本号,避免拉取旧版本引发兼容问题。
内容的提问来源于stack exchange,提问作者yololo 21
相关产品推荐
相关产品推荐

