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

Flutter中使用Segmented Button组件时屏幕出现黑条问题求助

问题解决:SegmentedButton出现黑条异常
  • 问题根源:你的SegmentedButton里存在重复的value值——第一个和第三个ButtonSegment的value都设成了Options.options1。SegmentedButton需要每个选项的value唯一,用来区分不同分段的状态,重复value会导致组件在onSelectionChanged触发状态更新时,内部渲染逻辑混乱,进而出现黑条;第二个选项用了唯一的Options.options2,所以显示正常;移除onSelectionChanged后,没有状态更新触发内部校验,所以暂时显示正常,但这不是根本解决办法。

  • 修复方案:给第三个选项分配唯一的value,确保Options枚举中包含对应的取值,同时调整选中状态的初始化逻辑。

修改后的核心代码片段:

SegmentedButton(
  segments: const <ButtonSegment<Options>>[
    ButtonSegment<Options>(
        value: Options.options1, label: Text('op1')),
    ButtonSegment<Options>(
        value: Options.options2, label: Text('op2')),
    // 改为唯一的Options.options3
    ButtonSegment<Options>(
        value: Options.options3, label: Text('op3'))
  ],
  selected: selection,
  onSelectionChanged: (Set<Options> newSelection) {
    setState(() {
      selection = newSelection;
    });
  },
),

同时要确保Options枚举定义完整:

enum Options {
  options1,
  options2,
  options3, // 新增该枚举值
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:43:20