hyzp_ybqx-Commit172:添加和维护全局变量 tabsState,实现如果是安卓平台允许后台提醒,如果是IOS平台、必须在前台才提醒
问题:山不在高水不在深: iOS App好像有点问题,就是登陆一次后,如果退出并切换其它程序,再切换回黑烟,虽然没有登陆,也会语音提醒,有新的黑烟车
This commit is contained in:
@@ -200,6 +200,7 @@ clear_user_info() {
|
||||
center_latitude = -1; // 区县中心纬度
|
||||
center_longitude = -1; // 区县中心经度
|
||||
userLogin = -1; //设置用户登录成功标志:1 成功,0 失败,-1 处理中
|
||||
tabsState = -1; //Tabs页面是否在前台:1 前台resumed,0 paused,-1 处理中
|
||||
}
|
||||
|
||||
// 511528、兴文县
|
||||
@@ -321,6 +322,10 @@ Future<void> sysPop() async {
|
||||
await SystemChannels.platform.invokeMethod('SystemNavigator.pop');
|
||||
}
|
||||
|
||||
int tabsState = -1; //Tabs页面是否在前台:1 前台resumed,0 paused,-1 处理中
|
||||
// resumed:可见的,并能响应用户的输入。
|
||||
// inactive:处在不活动状态,无法处理用户响应。
|
||||
// paused:不可见并不能响应用户的输入,但是在后台继续活动中。
|
||||
int userLogin = -1; //用户登录成功标志:1 成功,0 失败,-1 处理中
|
||||
|
||||
//人脸注册和人脸识别登录成功标志
|
||||
|
||||
@@ -2679,6 +2679,8 @@ Future faceLoginFun({@required String filePath, @required BuildContext context})
|
||||
// 一套APP适应多个区县登录过程04、登录成功,开始使用保存的登录信息预加载数据,并设置faceLogin = 1
|
||||
faceLogin = 1; //设置人脸验证成功标志。1 成功,0 失败,-1 处理中
|
||||
userLogin = 1; //设置用户登录成功标志:1 成功,0 失败,-1 处理中
|
||||
tabsState = 1; //Tabs页面是否在前台:1 前台resumed,0 paused,-1 处理中
|
||||
print("tabsState = $tabsState");
|
||||
startGetStatisDataNew(); // 2、登录前提前获取统计数据,改善用户登录体验
|
||||
});
|
||||
//获取其他用户信息
|
||||
@@ -2697,6 +2699,8 @@ Future faceLoginFun({@required String filePath, @required BuildContext context})
|
||||
} else {
|
||||
faceLogin = 0; //设置人脸验证成功标志。1 成功,0 失败,-1 处理中
|
||||
userLogin = 0; //设置用户登录成功标志:1 成功,0 失败,-1 处理中
|
||||
tabsState = -1; //Tabs页面是否在前台:1 前台resumed,0 paused,-1 处理中
|
||||
print("tabsState = $tabsState");
|
||||
print('人脸验证失败。');
|
||||
Navigator.pushNamed(context, '/');
|
||||
Fluttertoast.showToast(
|
||||
|
||||
@@ -161,6 +161,8 @@ class _LoginPageState extends State<LoginByName3> {
|
||||
print('登录成功');
|
||||
print('response.data = ${response.data}');
|
||||
userLogin = 1; //设置用户登录成功标志:1 成功,0 失败,-1 处理中
|
||||
tabsState = 1; //Tabs页面是否在前台:1 前台resumed,0 paused,-1 处理中
|
||||
print("tabsState = $tabsState");
|
||||
|
||||
// 一套APP适应多个区县登录过程02、进行登录验证,保存登录信息
|
||||
if (bRemmberPW) {
|
||||
@@ -209,6 +211,8 @@ class _LoginPageState extends State<LoginByName3> {
|
||||
} else {
|
||||
print('登录失败:${response.data["data"]}');
|
||||
userLogin = 0; //设置用户登录成功标志:1 成功,0 失败,-1 处理中
|
||||
tabsState = -1; //Tabs页面是否在前台:1 前台resumed,0 paused,-1 处理中
|
||||
print("tabsState = $tabsState");
|
||||
bLoginVerify = false; //处理延时登录,判断用户名登录是否验证通过
|
||||
bPreLoading = false;
|
||||
try_setState(); // 登录失败后,刷新页面
|
||||
|
||||
@@ -28,7 +28,7 @@ class Tabs extends StatefulWidget {
|
||||
_TabsState createState() => _TabsState();
|
||||
}
|
||||
|
||||
class _TabsState extends State<Tabs> {
|
||||
class _TabsState extends State<Tabs> with WidgetsBindingObserver {
|
||||
// 初始化插件
|
||||
DisableScreenshots _watermarkPlugin = DisableScreenshots();
|
||||
|
||||
@@ -86,6 +86,33 @@ class _TabsState extends State<Tabs> {
|
||||
});
|
||||
|
||||
init();
|
||||
|
||||
tabsState = 1; //Tabs页面是否在前台:1 前台resumed,0 paused,-1 处理中
|
||||
print("tabsState = $tabsState");
|
||||
// 注册应用生命周期监听
|
||||
WidgetsBinding.instance.addObserver(this);
|
||||
}
|
||||
|
||||
//监听App生命周期回调
|
||||
@override
|
||||
void didChangeAppLifecycleState(AppLifecycleState state) async {
|
||||
print("$state");
|
||||
tabsState = -1; //Tabs页面是否在前台:1 前台resumed,0 paused,-1 处理中
|
||||
switch (state) {
|
||||
// 处于这种状态的应用程序应该假设他们可能在任何时候暂停
|
||||
case AppLifecycleState.inactive:
|
||||
break;
|
||||
case AppLifecycleState.resumed: // 从后台切前台,界面可见
|
||||
tabsState = 1; //Tabs页面是否在前台:1 前台resumed,0 paused,-1 处理中
|
||||
break;
|
||||
case AppLifecycleState.paused: // 界面不可见,后台
|
||||
case AppLifecycleState.detached: // APP 结束时调用
|
||||
break;
|
||||
}
|
||||
print("tabsState = $tabsState");
|
||||
// resumed:可见的,并能响应用户的输入。
|
||||
// inactive:处在不活动状态,无法处理用户响应。
|
||||
// paused:不可见并不能响应用户的输入,但是在后台继续活动中。
|
||||
}
|
||||
|
||||
init() async {
|
||||
@@ -97,7 +124,10 @@ class _TabsState extends State<Tabs> {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
FlutterBackgroundService.initialize(onStart);
|
||||
if (g_bVoiceRemind) {
|
||||
doRemind();
|
||||
// 如果是安卓平台允许后台提醒,如果是IOS平台、必须在前台才提醒
|
||||
if (Platform.isAndroid || (Platform.isIOS && 1 == tabsState)) {
|
||||
doRemind();
|
||||
}
|
||||
} else {
|
||||
Future.delayed(Duration(seconds: 1), () {
|
||||
FlutterBackgroundService().sendData({"action": "stopService"});
|
||||
@@ -108,6 +138,8 @@ class _TabsState extends State<Tabs> {
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
// 移除生命周期监听
|
||||
WidgetsBinding.instance.removeObserver(this);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user