多语言后端数据

This commit is contained in:
czz
2025-08-02 17:41:36 +08:00
parent ff00ed60c0
commit bc14dae324
10 changed files with 570 additions and 465 deletions

View File

@@ -185,8 +185,10 @@ Timer? _messageTimer;
// });
// }
void startMessagePolling(int ent_type) {
// Get.put(MhMessageController());
// MhMessageController messageController = Get.find();
Get.put(MhMessageController());
MhMessageController messageController = Get.find();
final Set<String> _poppedMessageIds = {}; // 本地已弹窗的消息 ID无论是否已读成功
final Set<String> _readMessageIds = {};
_messageTimer?.cancel();
if (ent_type == APPPackageType.MHT.code) {
if (Get.isRegistered<MhMessageController>()) {
@@ -197,11 +199,56 @@ void startMessagePolling(int ent_type) {
Get.find<MessageController>().getMessageStatus();
}
}
_messageTimer = Timer.periodic(Duration(seconds: 10), (timer) async {
try {
if (ent_type == APPPackageType.MHT.code) {
if (Get.isRegistered<MhMessageController>()) {
Get.find<MhMessageController>().getMessageStatus();
final controller = Get.find<MhMessageController>();
await controller.getMessageStatus();
if (controller.model.system_message_read == 1) {
await controller.getMessageList("app_system");
final unhandledShareMessages =
controller.systemMessageList.where((item) {
final data = item['data'];
final id = item['_id']?.toString();
return data is Map &&
data['type'] == 'share' &&
id != null &&
!_poppedMessageIds.contains(id) &&
(item['read_time'] == null);
}).toList();
if (unhandledShareMessages.isNotEmpty) {
for (final message in unhandledShareMessages) {
final messageId = message['_id']?.toString();
if (messageId == null || _poppedMessageIds.contains(messageId))
continue;
// 新增:如果当前页面是消息页,则跳过弹窗
if (Get.currentRoute == '/messagePage') {
continue;
}
_poppedMessageIds.add(messageId);
try {
await controller.updateMessageReadStatus(
Get.context!, messageId);
} catch (e) {
print("标记消息 $messageId 为已读失败: $e");
}
final result =
await showMessageConfirmDialog(title: '设备分享提醒'.tr);
if (result == 'confirm') {
Get.toNamed('/messageDetail', arguments:message);
}
}
}
}
}
} else {
if (Get.isRegistered<MessageController>()) {
@@ -404,7 +451,7 @@ class MyApp extends StatelessWidget {
Get.lazyPut(() => SleepingHabitController()),
Get.lazyPut(() => PeopleInfoController()),
Get.lazyPut(() => MainPageController()),
Get.lazyPut(() => MhMessageController()),
Get.lazyPut(() => AddressListController()),
Get.lazyPut(() => AddressController()),
// Get.lazyPut(() => MHLanguageController()),