Merge remote-tracking branch 'Gitea/master' into iOS
This commit is contained in:
@@ -160,6 +160,9 @@ class _LoginPageState extends State<LoginByName3> {
|
||||
if (true == response.data["data"]["is_login"]) {
|
||||
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) {
|
||||
@@ -207,6 +210,9 @@ class _LoginPageState extends State<LoginByName3> {
|
||||
// Navigator.pushNamed(context, '/tabs', arguments: g_iIndex);
|
||||
} 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