import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:huixiang/utils/bridge.dart'; import 'package:shared_preferences/shared_preferences.dart'; abstract class BaseState extends State with WidgetsBindingObserver { int lastTime = DateTime.now().millisecondsSinceEpoch; @override void dispose() { super.dispose(); WidgetsBinding.instance.removeObserver(this); } @override void didChangeAppLifecycleState(AppLifecycleState state) { print("-didChangeAppLifecycleState-" + state.toString()); switch (state) { case AppLifecycleState.inactive: // 处于这种状态的应用程序应该假设它们可能在任何时候暂停。 break; case AppLifecycleState.resumed: //从后台切换前台,界面可见 pushRoute(); if (DateTime.now().millisecondsSinceEpoch - lastTime > 300000) Navigator.of(context).popAndPushNamed('/router/main_page'); break; case AppLifecycleState.paused: // 界面不可见,后台 lastTime = DateTime.now().millisecondsSinceEpoch; break; case AppLifecycleState.detached: // APP结束时调用 break; } } @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); } pushRoute() async { String startIntent = await Bridge.getStartIntent(); SharedPreferences sharedPreferences = await SharedPreferences.getInstance(); print("intent:$startIntent"); String pushData = ""; if (startIntent != null && startIntent != "") { pushData = startIntent; } else { pushData = sharedPreferences.getString("pushData"); } if (pushData == null || pushData == "") return; Map pushMap = jsonDecode(pushData); if (pushMap != null) { String routeName = ""; Map params = {}; switch (pushMap["typed"].toString()) { case "1": case "ARTICLE": routeName = "/router/web_page"; params["articleId"] = pushMap["info"]; break; case "2": case "ACTIVITY": routeName = "/router/web_page"; params["activityId"] = pushMap["info"]; break; case "3": case "SHOP": routeName = "/router/store_order"; params["id"] = pushMap["info"]; params["tenant"] = pushMap["tenant"]; params["storeName"] = pushMap["storeName"]; break; case "4": case "CREDIT_GOODS": routeName = "/router/integral_store_page"; params["goodsId"] = pushMap["info"]; break; case "5": case "ORDER": routeName = "/router/order_details"; params["id"] = pushMap["info"]; break; case "6": case "MEMBER": routeName = "/router/community_details"; params["businessId"] = pushMap["info"]; break; case "8": case "WALLET": routeName = "/router/mine_wallet"; params["id"] = pushMap["info"]; break; case "9": case "WELFARE": routeName = "/router/welfare_page"; params["id"] = pushMap["info"]; break; case "12": case "COUPON": routeName = "/router/coupon_page"; params["id"] = pushMap["info"]; break; case "13": case "CATE_BEAN": routeName = "/router/trading_card_page"; params["id"] = pushMap["info"]; break; } sharedPreferences.setString("pushData", ""); print("xgPushClickAction: routeName: $routeName"); if (routeName != "") { Navigator.of(context).pushNamed(routeName, arguments: params); } } } }