我正在使用flutter_multi_select_items
从JSON格式的项目数组中选择多个项目。它以前是工作的,但我想限制用户只能选择项目的顺序从右到左,而不是跳转到任何项目挑选下一个。例如,如果我有一个数组[1,2,3,4]
,我希望用户选择的顺序1->2->3->4
,而不是像1->3->2->4
等。
我的代码:
MultiSelectContainer(
itemsPadding: const EdgeInsets.all(10),
textStyles: const MultiSelectTextStyles(
textStyle: TextStyle(fontFamily: 'Montserrat',
fontWeight:FontWeight.bold,)),
showInListView: true,
listViewSettings: ListViewSettings( scrollDirection: Axis.horizontal,
separatorBuilder: (_, __) => const SizedBox(
width: 10,)),
items: List.generate(dataSchedule == null ? 0 : dataSchedule.length,
(index) => MultiSelectCard(value: dataSchedule[index]['time_slot'], label: dataSchedule[index]['time_slot'],)),
onChange: (allSelectedItems, selectedItem) { })
下面是我的数组返回结果:
["16:00","17:00","18:00","19:00","20:00","21:00"]
我希望从16:00 to 17:00 to 18:00 to 19:00 to 20:00 to 21:00
中选择
从上面的代码allSelectedItems
是为一个数组的项目选择和selectedItem
只是为一个单一的项目选择。如果有任何需要澄清的一部分,请让我知道,提前感谢。
1条答案
按热度按时间u2nhd7ah1#
所以我可以通过应用一些逻辑来解决这个问题。因为我不能在
onchanged
中得到index
,所以我在value:
中添加了索引,这样我就可以得到每个选择的索引值,然后我从值中删除了多余的值,只留下index
值,然后得到上一个选择值和当前选择值。最后,我使用if
语句检查当前选择减1是否等于前一个选择,否则它是正确的。我的最终代码如下: