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
相关产品推荐
相关产品推荐

