繁体   English   中英

每当用户关闭应用程序时,我是否想在我的应用程序 flutter 上执行 function?

[英]Do I want to perform a function on my app flutter whenever the app is closed by the user?

我用 flutter 开发了一个应用程序,它有一个与 OneSignal 的聊天和通知系统,在这个应用程序中,playerId 在应用程序第一次打开时注册,并在用户登录系统时链接到用户。

用户还可以选择保持登录状态!

用例:

当用户选择保持登录状态时,这很好,因为他会正常收到您的聊天通知。 但是当他选择不登录时,我遇到了问题。

当他在使用应用程序时,他应该链接到 playerId,但是当他关闭应用程序时(不管他怎么做,因为在手机上可以通过多种方式完成),你应该调用 function 取消链接用户来自 playerId 以便它不再接收聊天通知!

我的问题是,每当应用程序关闭时,我该如何执行此 function?

我想这样做是因为用户可以在不同的智能手机上访问系统。

我想到了 WillPopScope 但这只会检测到何时触发返回指挥棒。

有人能帮我吗? 谢谢!

您可以尝试侦听应用程序的生命周期事件

https://medium.com/pharos-production/flutter-app-lifecycle-4b0ab4a4211a

import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';

class LifecycleEventHandler extends WidgetsBindingObserver {
  LifecycleEventHandler({this.resumeCallBack, this.suspendingCallBack});

  final AsyncCallback resumeCallBack;
  final AsyncCallback suspendingCallBack;

  @override
  Future<Null> didChangeAppLifecycleState(AppLifecycleState state) async {
    switch (state) {
      case AppLifecycleState.inactive:
      case AppLifecycleState.paused:
      case AppLifecycleState.suspending:
        await suspendingCallBack();
        break;
      case AppLifecycleState.resumed:
        await resumeCallBack();
        break;
    }
  }
}


class AppWidgetState extends State<AppWidget> {
  void initState() {
    super.initState();

    WidgetsBinding.instance.addObserver(
    new LifecycleEventHandler(resumeCallback(() => setState((){}))
    );
  }
  ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM