Flutter中能否修改ShowDurationPicker的颜色?
解决duration_picker主题修改无效的问题
方案1:精准覆盖ThemeData组件样式
直接包裹Theme无效的话,试试针对性覆盖ThemeData里的核心样式属性,duration_picker内部依赖Material组件的默认样式,精准修改这些属性可能生效:
showDialog( context: context, builder: (context) { return Theme( data: Theme.of(context).copyWith( colorScheme: ColorScheme.fromSwatch( primarySwatch: Colors.deepPurple, accentColor: Colors.orange, ), sliderTheme: const SliderThemeData( activeTrackColor: Colors.deepPurple, thumbColor: Colors.deepPurple, inactiveTrackColor: Color(0xFFE0E0E0), ), elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( backgroundColor: Colors.deepPurple, foregroundColor: Colors.white, ), ), ), child: const DurationPickerDialog( initialTime: Duration(hours: 1), title: Text("选择时长"), ), ); }, );
方案2:修改包源码自定义样式
如果主题覆盖还是不行,直接修改包源码是最彻底的方式:
- 把duration_picker的源码下载到本地,在
pubspec.yaml里通过path引用本地包 - 找到包内的
duration_picker_dialog.dart文件,直接修改滑块、按钮、文本的颜色参数 - 修改后重新运行项目,即可生效
方案3:替换为支持主题的替代实现
不想折腾源码的话,可以换用更灵活的方案:
- 用
Slider、Text等基础组件自己封装时长选择器,完全控制样式 - 选择其他支持主题配置的第三方包,通过自定义builder或主题参数实现样式修改
内容的提问来源于stack exchange,提问作者Alji2124
相关产品推荐
相关产品推荐

