You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 02:25:23