解决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()中.
至此,前后台的监听已经实现了,最简单的测试方法,打开该页面,切换应用到后台状态,会看到控制台出现 “ 页面状态后台”的打印信息,再次打开应用,会看到“页面状态前台”的打印信息。