jonataslaw / getx

Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies easily with Get.
MIT License
10.43k stars 1.63k forks source link

Switch não atualiza #717

Closed herculesjpa closed 4 years ago

herculesjpa commented 4 years ago

Boa noite!

Desculpe se a pergunta parecer simples, mas sou iniciante e não estou conseguindo progredir. Uso este código va view para mostrar um switch. Ele altera o valor da variavel normalmente mas, não atualiza a tela. Fazendo via setState() funciona. Mas gostaria de usar apenas o Get.

GetBuilder<LoginController>(
                   builder: (_) {
                     return Switch(
                       value: _.salvarSenha,
                       activeColor: Theme.of(context).primaryColor,
                       onChanged: (bool newValue) {
                        _.salvarSenha = newValue;
                        print(_.salvarSenha);
                        },
                      );
                     },
                   ),

Desde já agradecido pela ajuda

eduardoflorence commented 4 years ago

Em LoginController você tem que utilizar update() ao final do seu método salvarSenha(). GetBuilder exige o uso de update()

eduardoflorence commented 4 years ago

Veja esta documentação: https://github.com/jonataslaw/getx/blob/master/documentation/pt_BR/state_management.md#uso-do-gerenciador-de-estado-simples

jonataslaw commented 4 years ago

no seu LoginController:

setSalvarSenha(bool val){
salvarSenha = newValue;
update();
}

// na sua view:

onChanged: controller.setSalvarSenha,

lógica deve estar sempre na sua view, e a atualização do GetBuilder se dá por meio do update. Tente os canais de plataforma (Telegram/Discord/Slack) para tirar dúvidas, o git é APENAS para bugs e solicitação de recursos.

Quando abrir uma issue, use preferencialmente inglês, isso faz com que pessoas do mundo inteiro te entenda, e não só lusófonos.

Como isso não é uma issue, estou fechando

herculesjpa commented 4 years ago

Obrigado pelo retorno! Vou procurar estes outros canais.