Search code examples
flutterdartcheckboxlist

Cannot Select Checkbox List Tile Flutter


I've created a map of values to make checkboxes. The map consists of String and bools and when the value of the bool is changed, the check box value should change.

EDIT 1:

My ListView Checkbox

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]);
                          });
                        }
                      });
                    },
                  )

Creating the Map:

        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');

  }

Selected Order Method

var _selectedOrders = [];

  getItems() {
    undeliveryOrders.forEach((key, value) {
      if (value == false) {
        _selectedOrders.add(key);
      }
    });

    print(_selectedOrders);

    _selectedOrders.clear();
  }

Solution

  • In my case, the setState() is not responding, try to use StatefulBuilder().

    For Example:

    ...
    
    bool isSelected = false;
    
    StatefulBuilder(
      builder: (context, _setState) {
         return ListView(
              children: [
              CheckboxListTile(
                  value: isSelected, 
                  onChanged: (bool? value) {
                      _setState(() => isSelected = value);
                  },
             ),
           ],
         );
      },
    );
    ...