flutter didChangeAppLifecycleState nunca é executado

Aug 29 2020

Eu implementei o WidgetsBindingObserver, mas o aplicativo NUNCA é enviado para segundo plano, então não reconhece oAppLifecycleState.resumed

esta é a implementação atual


  @override
  void didChangeAppLifecycleState(AppLifecycleState state) async {
    print('\n\ndidChangeAppLifecycleState');
    switch (state) {
      case AppLifecycleState.resumed:
        print('\n\nresumed');
        _mymethod();
        break;
      case AppLifecycleState.inactive:
        print('\n\ninactive');
        break;
      case AppLifecycleState.paused:
        print('\n\npaused');
        break;
      case AppLifecycleState.detached:
        print('\n\ndetached');
        break;
    }
  }

para simular o processo eu faço o próximo no android

  1. execute o projeto como --release
  2. abra o widget com oWidgetsBindingObserver
  3. abra outro aplicativo (como chrome ou configurações do telefone)
  4. voltar ao aplicativo

ao retornar ao aplicativo consigo ver meu widget na tela, o aplicativo não reinicia, mas NENHUM dos prints aparece no console não ocorre o evento print('\n\ndidChangeAppLifecycleState');e _mymethod();nunca é executado

Respostas

4 Abion47 Aug 29 2020 at 05:33

O mixin WidgetsBindingObserver requer um pouco mais de trabalho do que simplesmente implementar a interface. Você também precisa adicionar o seguinte à sua classe de estado do widget:

@override
void initState() {
  super.initState();
  WidgetsBinding.instance.addObserver(this);
}

@override
void dispose() {
  WidgetsBinding.instance.removeObserver(this);
  super.dispose();
}