无法选择复选框列表平铺颤振

时间:2020-04-14 02:51:07

标签: flutter dart checkboxlist

我已经创建了一个值映射表以创建复选框。该映射由String和bool组成,当bool的值更改时,复选框的值也应更改。

编辑1:

我的ListView复选框

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();
  }

2 个答案:

答案 0 :(得分:5)

我认为您可能将每个值都不必映射为布尔值而使事情复杂化,我将被检查的值添加到数组中,然后检查该项目是否在该数组中如果不是假,则为真。您只需要记住如果未选中该复选框,则删除该项目,这里是一些示例代码。

B[b]

答案 1 :(得分:0)

您可以尝试下面的代码吗?

               onChanged: (bool value) {
                  setState(() {
                    undeliveryOrders[key] = value ?? false;
                  });
                },