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

Flutter Segmented Button:能否为ButtonSegment设置多个value值?

实现方案

可行,但无法直接给ButtonSegment的value字段同时赋值0和1——因为默认单选模式下,SegmentedButton的value仅支持单个值。你可以通过以下方式实现需求:

方法:自定义过滤标识,在逻辑层处理多状态匹配

给Button1设置一个自定义的标识值(比如'0-1'),然后在过滤列表时,判断选中该标识后筛选status为0或1的对象。

示例代码:

// 状态变量:记录选中的过滤项
String? selectedFilter;

// SegmentedButton 实现
SegmentedButton<String>(
  segments: const [
    ButtonSegment(
      value: '0-1',
      label: Text('Button1'),
    ),
    ButtonSegment(
      value: '2',
      label: Text('Button2'),
    ),
    ButtonSegment(
      value: '3',
      label: Text('Button3'),
    ),
  ],
  selected: {selectedFilter ?? '0-1'}, // 默认选中Button1
  onSelectionChanged: (newSelection) {
    setState(() {
      selectedFilter = newSelection.first;
    });
  },
)

// 列表过滤逻辑
final filteredObjects = originalObjects.where((obj) {
  if (selectedFilter == '0-1') {
    return obj.status == 0 || obj.status == 1;
  }
  // 其他按钮直接匹配对应status
  return obj.status == int.parse(selectedFilter!);
}).toList();

这样就能实现:点击Button1时筛选出status为0和1的对象,点击Button2/3时分别筛选status为2/3的对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:05:01