flutter/lib/utils/lifecycle_handler.dart

47 lines
1.6 KiB
Dart
Raw Permalink Normal View History

2025-07-21 15:46:30 +08:00
import 'package:flutter/material.dart';
import 'package:loopin/IM/im_service.dart';
class LifecycleHandler with WidgetsBindingObserver {
static bool isInForeground = true;
static DateTime appBecameActiveTime = DateTime.now();
2025-09-04 18:08:01 +08:00
static VoidCallback? onAppResumed; // 添加回调函数
2025-07-21 15:46:30 +08:00
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
switch (state) {
case AppLifecycleState.resumed:
isInForeground = true;
appBecameActiveTime = DateTime.now();
2025-10-10 11:27:26 +08:00
if (onAppResumed != null) {
2025-09-04 18:08:01 +08:00
onAppResumed!();
}
2025-07-21 15:46:30 +08:00
logger.i("App 回到前台:$appBecameActiveTime");
break;
case AppLifecycleState.inactive:
logger.i("App 进入非活跃状态 (inactive)");
break;
case AppLifecycleState.paused:
isInForeground = false;
logger.i("App 进入后台 (paused)");
break;
case AppLifecycleState.detached:
2025-10-10 11:27:26 +08:00
// 处理安卓悬浮导航切后台视频会自动开始播放的问题
2025-07-21 15:46:30 +08:00
isInForeground = false;
logger.i("App 被分离 (detached)");
2025-10-10 11:27:26 +08:00
// if (Get.isRegistered<VideoModuleController>()) {
// final videoModuleController = Get.find<VideoModuleController>();
// logger.w(videoModuleController.videoTabIndex.value);
// logger.w(videoModuleController.videoPlayFriend.value);
// logger.w(videoModuleController.videoPlayIndex.value);
// RecommendModule.playDispose();
// }
2025-07-21 15:46:30 +08:00
break;
case AppLifecycleState.hidden:
isInForeground = false;
logger.i("App 被隐藏 (hidden)");
break;
}
}
}