无法选择复选框列表平铺颤动
Posted
技术标签:
【中文标题】无法选择复选框列表平铺颤动【英文标题】:Cannot Select Checkbox List Tile Flutter 【发布时间】:2020-07-26 17:25:31 【问题描述】:我创建了一个值映射来制作复选框。该映射由字符串和布尔值组成,当布尔值更改时,复选框值应更改。
编辑 1:
我的列表视图复选框
CheckboxListTile(
title: new Text(
key,
style: textHeaderStyle,
),
value: _selectedOrders.contains(undeliveryOrders[key]),
activeColor: Colors.pink,
checkColor: Colors.white,
onChanged: (bool value)
setState(()
if(value)
_selectedOrders.add(undeliveryOrders[key]);
undeliveryOrders[key] = value;
else
setState(()
_selectedOrders.remove(undeliveryOrders[key]);
);
);
,
)
创建地图:
void _formatOrders(availableOrders)
for (int i = 0; i < availableOrders.length; i++)
var tempOrder = '$availableOrders[i].customer.uniqueInfo.name , $availableOrders[i].address';
undeliveryOrders['$tempOrder'] = false;
print('$undeliveryOrders');
print('$numbers');
选定的订购方式
var _selectedOrders = [];
getItems()
undeliveryOrders.forEach((key, value)
if (value == false)
_selectedOrders.add(key);
);
print(_selectedOrders);
_selectedOrders.clear();
【问题讨论】:
【参考方案1】:我认为您可能过于复杂了每个值不必映射到布尔值,我这样做的方式是将要检查的值添加到数组中,然后检查该项目是否在该数组中如果不是假的话,它是真的。如果未选中复选框,您只需要记住删除该项目。这里有一些示例代码。
List<String> items = ['Item 1', 'Item 2', 'Item 3'];
List<String> isChecked = [];
//Initialized outside build
ListView(
children: <Widget>[
...items
.map(
(item) => CheckboxListTile(
subtitle: Text('This is a subtitle'),
secondary: Text('This is Secondary text'),
title: Text(item),
value: isChecked.contains(item),
onChanged: (bool value)
if (value)
setState(()
isChecked.add(item);
);
else
setState(()
isChecked.remove(item);
);
,
),
)
.toList()
],
),
【讨论】:
谢谢你!我只有一个问题。当我选择任何复选框时,所有项目都被选中。我可能歪曲了一些事情,因为我必须在动态生成数据时映射这些值。我将展示我现在编辑的内容。 没关系。我得到了它。谢谢!【参考方案2】:你可以试试下面这段代码吗?
onChanged: (bool value)
setState(()
undeliveryOrders[key] = value ?? false;
);
,
【讨论】:
以上是关于无法选择复选框列表平铺颤动的主要内容,如果未能解决你的问题,请参考以下文章