解决flutter应用前后台切换监听的问题-WidgetsBindingObserver

解决flutter应用前后台切换监听的问题-WidgetsBindingObserver

近期有这么一个需求,在处理订单时,待付款状态需要唤起支付宝进行支付,这就涉及到需要对支付状态进行监听的问题,也就是监听应用的前后台状态。
监听主要通过WidgetsBindingObserver来实现,分为以下几步。

1. 添加混入mixins(关键字with)

class _order_mainState extends State<order_main> 
with SingleTickerProviderStateMixin,WidgetsBindingObserver {
}

在with后面添加WidgetsBindingObserver即可

2. 初始化时添加监听

 // 必须添加观察者监听
    WidgetsBinding.instance?.addObserver(this);

原生的flutter可以写在initState()方法中,getx微架构可以写在onInit()中

3.开始写监听方法

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
    switch (state) {
      case AppLifecycleState.resumed:
        print("页面状态前台${state}");
        break;
      case AppLifecycleState.paused:
        print("页面状态后台${state}");
        break;
    }
  }

4. 页面移除时,移除监听者

  @override
  void onClose() {
    // TODO: implement onClose
    super.onClose();
    //3. 页面销毁时,移出监听者
    WidgetsBinding.instance?.removeObserver(this);
  }

原生的flutter可以写在dispose()方法中,getx微架构可以写在onClose()中.

至此,前后台的监听已经实现了,最简单的测试方法,打开该页面,切换应用到后台状态,会看到控制台出现 “ 页面状态后台”的打印信息,再次打开应用,会看到“页面状态前台”的打印信息。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值