Flutter升级后依赖报错:ThemeData无accentTextTheme属性
错误原因
升级Flutter后,你使用的time_picker_widget: ^1.0.0+10依赖了已被新版Flutter移除的ThemeData.accentTextTheme属性,导致编译失败。accentTextTheme是旧版Material Design 2中的属性,在适配Material 3的新版Flutter中已被废弃或重命名。
解决思路与方案
以下是几个可行的解决办法,按优先级推荐:
方案1:升级time_picker_widget到最新兼容版本
- 打开你的
pubspec.yaml,将time_picker_widget: ^1.0.0+10替换为该包的最新版本; - 执行命令:
flutter pub upgrade time_picker_widget,完成后重新编译项目。
方案2:降级Flutter到兼容旧包的版本
如果暂时不想更换或升级包,可以将Flutter降级到仍支持accentTextTheme的稳定版本,比如Flutter 2.x系列:
- 执行命令:
flutter downgrade 2.10.5(可根据需求选择其他兼容的旧稳定版); - 等待降级完成后,重新运行项目。
方案3:手动修改缓存包代码(临时应急)
这个方法仅作为临时应急,因为下次执行flutter pub get或升级时修改会被覆盖:
- 定位到报错文件:
C:/Users/sonal/AppData/Local/Pub/Cache/hosted/pub.dev/time_picker_widget-1.0.0+10/lib/time_picker_widget.dart; - 找到第1377行的
theme.accentTextTheme,替换为新版Flutter的替代属性,示例:
也可根据实际UI需求选择// 替换为适配新版的文本主题 theme.textTheme.apply(bodyColor: theme.colorScheme.secondary)theme.textTheme下的具体样式(如bodyLarge、bodyMedium); - 保存文件后重新编译项目。
方案4:替换为维护活跃的时间选择器包
如果time_picker_widget长期未更新适配新版Flutter,建议替换为其他维护活跃的时间选择器组件,比如官方的showTimePicker,或者flutter_time_picker_spinner等包:
- 在
pubspec.yaml中移除time_picker_widget依赖,添加新的包; - 修改项目中使用时间选择器的代码,适配新组件的API。
内容的提问来源于stack exchange,提问作者sonalika
相关产品推荐
相关产品推荐

