我想知道能不能查杀掉这个应用程序. 比方说,在聊天应用程序中,当用户使用onWillPop离开聊天室时,我可以获得时间戳. 但如果用户直接从聊天室关闭了这款应用,它就不会被激活.那么有没有办法检测到这一点呢?
或者有什么建议以不同的方式获取时间戳吗?

推荐答案

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

您可以监听不活动、暂停和分离.

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

2019年11月4日,随着这pull request的出现,枚举AppLifecycleState.suspending更名为AppLifecycleState.detached.如果您在1.12之前的版本中使用Flutter ,则仍必须使用AppLifecycleState.suspending.

Flutter相关问答推荐

我遇到了一个问题,从showDialogue()调用Navigator.pop()两次导致屏幕空白

当第二页在单独的小工具中使用Navigator.pop时,Navigator.push不起作用

Flutter:如何从Bottom Navigator中删除此内容

Flutter 中不存在URI的目标

无法将Flutter 连接到Firebase

Flutter 中的面向对象模式

为什么Build_Runner的输出为0?

有没有方法可以从当前时间轻松计算TimeStamp?

Flutter 日期时间格式

如何在Flutter 中使用选定的键和值从 map 列表创建 map

Flutter列顶部和底部出现不必要的边距问题

我可以在列表图块下方添加其他小部件吗

如何在 Flutter 中测试动画图标

如何显示从 MariaDB 获取的数据到列表视图

如何将 List 转换为 String []?

如何在 Flutter 中创建 Facebook 创建帖子屏幕?

单元测试中如何比较NaN和NaN是否相等

如何验证非表单字段?

如何在 tabBar 中的选项卡之间制作垂直线?

在另一个页面编辑数据后更新 Flutter 页面的惯用方法?