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

charts_flutter 如何修改柱状图的默认选中颜色

charts_flutter柱状图修改默认选中颜色方案

你遇到的深色叠加遮罩是DomainHighlighter行为的默认效果,可通过两种方案实现自定义选中颜色:

方案一:完全自定义选中颜色(无叠加遮罩,最灵活)

步骤1:移除默认的DomainHighlighter配置

删除behaviors中的charts.DomainHighlighter(),避免默认遮罩干扰自定义颜色。

步骤2:声明变量存储选中状态

// 以你使用的时间类型domain为例
DateTime? _selectedDomain;

步骤3:修改选中监听逻辑,同步更新选中状态

selectionModels: [
  charts.SelectionModelConfig(
    type: charts.SelectionModelType.info,            
    changedListener: (model) {              
      if (model.selectedDatum.isNotEmpty) {
        _selectedDomain = model.selectedDatum.first.datum.time;
        // 状态变更后刷新UI
        setState(() {});
        print(model.selectedDatum.first.datum.time);
      } else {
        // 取消选中时清空状态
        if(_selectedDomain != null) {
          _selectedDomain = null;
          setState(() {});
        }
      }
    },
  ),
],

步骤4:在Series的colorFn中根据选中状态返回对应颜色

charts.Series<你的数据类, DateTime>(
  id: 'barSeries',
  domainFn: (data, _) => data.time,
  measureFn: (data, _) => data.value,
  colorFn: (data, _) {
    // 选中状态返回自定义颜色
    if(data.time == _selectedDomain) {
      return charts.MaterialPalette.green.shadeDefault;
    }
    // 普通状态返回默认颜色
    return charts.MaterialPalette.blue.shadeDefault;
  },
  data: yourDataList,
)

方案二:仅修改默认遮罩样式

如果不需要完全自定义选中颜色,只想调整默认叠加遮罩的颜色和透明度,直接配置DomainHighlighter的color参数即可:

behaviors: [
  charts.SelectNearest(),
  // 示例:设置遮罩为30%透明度的白色,替换默认深色遮罩,透明度取值范围0-255
  charts.DomainHighlighter(
    color: charts.Color(r: 255, g: 255, b: 255, a: 76),
  )
],

内容的提问来源于stack exchange,提问作者shababhsiddique

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:54:07