jeudi 28 mai 2020

Como fazer somente um CheckBoxListTile ser selecionado

Eu estou tendo problema no CheckBoxListTile, ele está sendo construido pelo ListView.builder e eu estou conseguindo selecionar mais de um campo, tive a ideia de tentar mapear meus campos com o valor "false", e se caso algum fosse selecionado o value mudaria para "true", contudo não consigo passar disso. O meu objetivo é q somente um elemento do Mapa pode ser "true", ou seja, só pode ter um CheckBox selecionado por vez, caso um esteja selecionado, e o usuário clicar em outro, o primeiro desmarcará e o último será marcado.

Código:

  Map<String, bool> _currencies = {
    "one": false,
    "two": false,
    "three": false,
    "one2": false,
    "two2": false,
    "three2": false,
    "one3": false,
    "two3": false,
    "three3": false,
    "one4": false,
    "two4": false,
    "three4": false,
    "one5": false,
    "two5": false,
    "three5": false,
  };

  ....
  body: ListView.builder(
          itemCount: _currencies.length,
          itemBuilder: (BuildContext context, int index) {
            return Material(
              child: ListTile(
                leading: _currencies.values.elementAt(index) == false
                    ? Icon(null)
                    : Icon(Icons.check),
                title: Text(_currencies.keys.elementAt(index)),
                onTap: () {
                  setState(
                    () {
                     _currencies[_currencies.keys.elementAt(index)] =
                     !_currencies[_currencies.keys.elementAt(index)];                    
                   },
                  );
                },
              ),
            );
          },
        ),

Exemplo




Aucun commentaire:

Enregistrer un commentaire