Flutter: Pop Scope não funciona?

Leonardo Godde
Share! por Ateliê de Software
3 min readApr 19, 2024

--

Com a notícia do fim do WillPopScope, PopScope é a solução… mas nem sempre funciona. Pelo menos na API 34 do Android, não.

Hoje me deparei com uma missão corriqueira no meu projeto: precisava fazer uma notificação aparecer quando alguém tentasse sair do cadastro sem salvar. Tudo certo! Já tinha o fluxo pronto, a caixa de diálogo configurada… só faltava uma coisa:

Tanto o botão “voltar” lá na AppBar quanto o botão de voltar do Android precisavam acionar essa notificação. Ou seja, a caixinha deveria dar as caras e só deixar voltar mesmo após a confirmação, usando o Navigator.pop(context).

Somente um exemplo da caixa de diálogo

Fácil! Interceptar usando o WillPopScope como já fiz tantas vezes antes!

Mas aí, minha IDE me mandou uma mensagem meio séria: “‘WillPopScope’ está desatualizado e não deve ser usado. Use PopScope no lugar. Essa função foi depreciada após a versão v3.12.0–1.0.pre. Tenta trocar a função antiga pela nova.”

Beleza, então segui a documentação oficial e troquei pelo PopScope. Só que não foi bem como eu esperava! Nada de caixa de diálogo aparecendo, e parece que o PopScope estava sendo completamente ignorado. E o pior de tudo, quando eu usava o botão de voltar do Android, o aplicativo simplesmente fechava!

Passei um tempão pesquisando, tentando encontrar uma solução. Nem mesmo o antigo e já depreciado WillPopScope funcionava no meu Android API 34, só na API 30.

Até que finalmente, depois de muitas tentativas, uma solução surgiu na minha cabeça. Tá aí o que funcionou comigo:

  • Abra AndroidManifest.xml
  • Adicione: android:enableOnBackInvokedCallback=”false”
  • Adicione PopScope ou WillPopScope:
PopScope(
canPop: false,
onPopInvoked: (didPop) {
// faça o que precisar...
}
)

WillPopScope(
onWillPop: () async {
// faça o que precisar...
return false;
}
)

— Eita, acabou assim do nada? Um fim repentino, mas esse texto tá saindo durante a madrugada (já são 02:07 no Brasil) pra dar uma força pra galera que tá precisando.

Faça o rebuild da sua aplicação e vá dormir em paz!

Photo by Kate Stone Matheson on Unsplash

→ Siga o nosso blog pelo Medium e fique por dentro de tudo o que acontece no Ateliê de Software.

Dê um alô pra gente! E nos acompanhe nas redes sociais:

E-mail: contato@atelie.software
Site
Facebook
Instagram
LinkedIn
Discord
Podcast: Spotfy | Deezer

--

--