Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

A tela não atualiza na hora

No meu StatefulWidget da Tela Principal, eu tenho o seguinte pedaço de código:

InkWell(
              onTap: () => openMenu(context),
              child: Image.asset('images/menu_icon.png', height: 50),
            ),

o openMenu() que está definido em um outro arquivo retorna um SimpleDialog com duas opções:

openMenu(context) {
  showDialog(
      context: context,
      builder: (BuildContext context) {
        return SimpleDialog(
          title: const Text('Ações'),
          children: <Widget>[
            SimpleDialogOption(
              onPressed: () => apagarHistorico(),
              child: const Text('Apagar histórico'),
            ),
            SimpleDialogOption(
              onPressed: () {
                Navigator.pushAndRemoveUntil(
                    context,
                    MaterialPageRoute(builder: (context) => Login()),
                    (route) => false);
              },
              child: const Text(
                'Logout',
                style: TextStyle(color: Colors.red),
              ),
            ),
          ],
        );
      });
}

A dúvida que eu estou tendo é como fazer pra quando eu clicar em 'Apagar histórico', a tela seja atualizada na hora. A função apagarHistorico() funciona, mas eu só consigo ter um feedback quando troco de tela e depois retorno.

3 respostas

Murilo, tudo bem ?

Você está dando um setState após apagar o historico ?

Senão tiver o setState dificilmente vai ser atualizado na tela

Eu pensei nisso depois que mandei a pergunta, então pra testar eu movi o openMenu() pro meu StatefulWidget, e coloquei o apagarHistorico() dentro do setState, mas ainda assim não funcionou, fiquei até surpreso.

solução!

Bom dia Murilo, tudo bom?

O que você pode fazer também é é implementar um listener próprio que vai permitir que quem utilizar o dialog, consiga executar alguma ação quando o apagarHistorico() for executado. E na ação, usa o setState para atualizar.

Se ainda não entendeu bem, da uma olhada aqui

Qualquer dúvida, estamos a disposição.