Flutter更新后出现DatePickerTheme重复导入编译错误
更新Flutter后项目编译失败,报错信息如下:
/C:/Users/DL/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_datetime_picker-1.5.1/lib/flutter_datetime_picker.dart:6:1: Error: 'DatePickerTheme' is imported from both 'package:flutter/src/material/date_picker_theme.dart' and 'package:flutter_datetime_picker/src/datetime_picker_theme.dart'.
import 'package:flutter_datetime_picker/src/datetime_picker_theme.dart';
datetime_picker_theme.dart:1
^^^^^^^^^^^^^^^/C:/Users/DL/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_datetime_picker-1.5.1/lib/flutter_datetime_picker.dart:199:31: Error: 'DatePickerTheme' is imported from both 'package:flutter/src/material/date_picker_theme.dart' and 'package:flutter_datetime_picker/src/datetime_picker_theme.dart'.
this.theme = theme ?? DatePickerTheme(),
^^^^^^^^^^^^^^^
Failed to compile application.
问题原因
Flutter更新后,官方Material库新增了DatePickerTheme类,而你使用的flutter_datetime_picker:1.5.1版本内部也定义了同名类,导致命名冲突触发编译错误。
解决办法
升级第三方包(推荐)
打开项目根目录的pubspec.yaml,将flutter_datetime_picker的版本更新为最新稳定版,例如:dependencies: flutter_datetime_picker: ^2.1.0 # 替换为pub.dev上的最新版本号执行命令更新依赖:
flutter pub get新版本已修复命名冲突问题,会调整内部类名或导入逻辑。
临时修改缓存文件(应急方案)
若暂时无法升级,可手动修改缓存中的包文件:- 打开路径
C:/Users/DL/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_datetime_picker-1.5.1/lib/flutter_datetime_picker.dart - 修改导入语句,为内部主题类添加别名:
import 'package:flutter_datetime_picker/src/datetime_picker_theme.dart' as pickerTheme; - 定位到第199行,替换
DatePickerTheme()为别名调用:this.theme = theme ?? pickerTheme.DatePickerTheme(),
注意:该修改会在下次执行
flutter pub get时被覆盖,仅作为临时修复。- 打开路径
替换为官方组件
如果不需要第三方包的特定功能,直接使用Flutter官方提供的showDatePicker、showTimePicker等日期选择组件,彻底规避第三方依赖的兼容性问题。
内容的提问来源于stack exchange,提问作者Dran Leynard Gamoso

