Flutter detect killing off the app

后端 未结 1 1850
灰色年华
灰色年华 2020-12-08 10:16

I would like to know whether detect killing off the app is possible or not. Let’s say in a chat app, I was able to get timestamp when user leaves the chat room by using onW

相关标签:
1条回答
  • 2020-12-08 10:40

    See also https://flutter.io/flutter-for-android/#how-do-i-listen-to-android-activity-lifecycle-events

    You can listen for inactive, paused, and detached. This might be a bit too early but usually it's better to do some cleanup a bit too early and too often than not at all:

    WidgetsBinding.instance.addObserver(LifecycleEventHandler(
        detachedCallBack: () async => widget.appController.persistState(),
        resumeCallBack: () async {
          _log.finest('resume...');
        }));
    
    class LifecycleEventHandler extends WidgetsBindingObserver {
      LifecycleEventHandler({this.resumeCallBack, this.detachedCallBack});
    
      final FutureVoidCallback resumeCallBack;
      final FutureVoidCallback detachedCallBack;
    
    //  @override
    //  Future<bool> didPopRoute()
    
    //  @override
    //  void didHaveMemoryPressure()
    
      @override
      Future<void> didChangeAppLifecycleState(AppLifecycleState state) async {
        switch (state) {
          case AppLifecycleState.inactive:
          case AppLifecycleState.paused:
          case AppLifecycleState.detached:
            await detachedCallBack();
            break;
          case AppLifecycleState.resumed:
            await resumeCallBack();
            break;
        }
        _log.finest('''
    =============================================================
                   $state
    =============================================================
    ''');
      }
    
    //  @override
    //  void didChangeLocale(Locale locale)
    
    //  @override
    //  void didChangeTextScaleFactor()
    
    //  @override
    //  void didChangeMetrics();
    
    //  @override
    //  Future<bool> didPushRoute(String route)
    }
    

    Edit

    With this pull request on 4th November 2019, the enum AppLifecycleState.suspending was renamed to AppLifecycleState.detached. If you are using Flutter with a version prior to 1.12, you must still use AppLifecycleState.suspending.

    0 讨论(0)
提交回复
热议问题