Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Outros setState do código

Eu fiquei em dúvida sobre o uso do provider, em qual partes e como chamar, no exemplo usou Consumer e Provider.of, no meio do código pronto tem mais setState, posso remover o restante, tem um no dropdown, preciso criar uma classe para o dropdown ou não precisa, como ele atualiza o valor do dropdown?

 StatefulBuilder(
                        builder: (BuildContext context, StateSetter setState) {
                      return DropdownButton(
                        isExpanded: true,
                        value: dropdownValue,
                        icon: const Icon(Icons.arrow_downward),
                        style: const TextStyle(color: Colors.deepPurple),
                        underline: Container(
                          height: 2,
                          color: Colors.indigo,
                        ),
                        onChanged: (newValue) {    
                            dropdownValue = newValue as ClientType; //removido setState
                        },
                        items: listTypes.types.map((ClientType type) {
                          return DropdownMenuItem<ClientType>(
                            value: type,
                            child: Text(type.name),
                          );
                        }).toList(),
                      );
                    }),
1 resposta
solução!

Oi Gisele, tudo bem?

No código que você compartilhou, o setState é utilizado para atualizar o estado do widget pai, que é um StatefulWidget. Mas, no caso do DropdownButton, você não precisa utilizar o setState porque a atualização do valor selecionado já é feita internamente pelo próprio widget.

Quando você seleciona um novo valor no DropdownButton, o onChanged é chamado e o novo valor é passado como parâmetro para a função. Nesse caso, o valor é atribuído diretamente à variável dropdownValue sem a necessidade do setState, como você mencionou.

A parte do código que faz essa atribuição:

onChanged: (newValue) {    
  dropdownValue = newValue as ClientType; //removido setState
},

Então, você pode remover o setState nesse caso específico, pois o DropdownButton já cuida da atualização do valor selecionado.

Espero ter ajudado.

Um abraço.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software