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

[Dúvida] Problemas com o navigator

Eu tenho uma tela principal, essa tela carrega uma lista de widgets, onde cada widget tem um botão, esse botão tem que levar o usuário para uma tela secundária. Já tentei diversos métodos do Navigator, mas clico no botão e não aparece nada.

o botão executa um método que carrega umas informações de uma classe com um switch-case, bem simples, depois executa o push

coloquei um diagrama pra poderem entender melhor:

Imagem 1: https://ibb.co/jyR8TwY Imagem 2: https://ibb.co/N1wZ45d Imagem 3: https://ibb.co/vsGb72c

código do botão do widget:

Padding(
                  padding: const EdgeInsets.only(right: 8.0),
                  child: SizedBox(
                      width: 50,
                      height: 50,
                      child: ElevatedButton(
                          onPressed: () {
                            clanSelect(widget.codClan);
                            Navigator.pop(context);
                            Navigator.pushNamed(context, '/char_creation2');
                            setState(() {});
                          },
                          child: Stack(
                            alignment: Alignment.center,
                            children: [
                              Positioned.directional(
                                  textDirection: Directionality.of(context),
                                  start: -3,
                                  child: const Icon(Icons.add))
                            ],
                          )))
2 respostas

E aí, Lucas!

Tô vendo que você tá enfrentando uns perrengues com o Navigator, né? Vamos tentar entender e resolver essa parada. De cara, dei uma olhada nas imagens que você mandou pra ter uma noção melhor do que tá rolando.

Pelo que você descreveu e mostrou no código, a lógica parece simples: você tem uma lista de widgets, cada um com um botão que deveria levar o usuário pra uma tela secundária quando clicado. Mas tá parecendo que o Navigator não tá fazendo o seu papel direito.

Aqui vão algumas sugestões pra você:

Você tá usando Navigator.pop(context) antes de Navigator.pushNamed(context, '/char_creation2'). O Navigator.pop(context) tira a tela atual da pilha, então talvez isso esteja afetando a navegação. Tenta trocar a ordem e ver se resolve. Certifique-se de que a rota '/char_creation2' tá sendo definida corretamente no seu MaterialApp lá no main.dart. Às vezes, um pequeno erro na definição da rota pode causar esse tipo de problema.

Use breakpoints ou print statements pra rastrear exatamente até onde o código tá executando. Assim, você pode ver se o método clanSelect(widget.codClan); tá sendo chamado corretamente e se tudo está indo como esperado. Às vezes, problemas com o BuildContext podem causar problemas com o Navigator. Garanta que o context que você tá usando pra chamar o Navigator é válido e tá no lugar certo. Dá uma revisada geral no código pra ver se não tem nada interferindo na navegação. Às vezes, um widget pai pode estar atrapalhando o comportamento do Navigator.

Se mesmo assim continuar dando ruim, manda mais detalhes ou código relacionado à navegação que a gente tenta desvendar juntos. Boa sorte aí!

solução!

Vim aqui avisar que encontrei o problema: tinha um atributo em uma classe que usava atributos de outra classe para adquirir o valor, isso estava dando um erro de StackOverflow, e eu demorei pra descobrir pq estava usando o breakpoint no local errado na hora de debugar. Por fim o problema se resolveu quando eu adicionei um "late" no atributo que tava dando problema.