82 lines
2.3 KiB
Dart
82 lines
2.3 KiB
Dart
import 'package:get/get.dart';
|
||
import 'package:starwork_flutter/base/base_controller.dart';
|
||
import 'package:starwork_flutter/views/home/home_controller.dart';
|
||
import 'package:starwork_flutter/views/main/main_controller.dart';
|
||
import 'messages_model.dart';
|
||
|
||
class MessagesController extends BaseController {
|
||
|
||
final mainController = Get.find<MainController>();
|
||
final homeController = Get.find<HomeController>();
|
||
|
||
// 响应式消息列表
|
||
final RxList<MessageItem> messageList = <MessageItem>[].obs;
|
||
|
||
@override
|
||
void onInit() {
|
||
super.onInit();
|
||
_initializeMessages();
|
||
}
|
||
|
||
// 初始化消息数据
|
||
void _initializeMessages() {
|
||
messageList.value = [
|
||
MessageItem(
|
||
type: MessageType.deviceStatus,
|
||
title: '设备状态',
|
||
subtitle: '[设备在线] DS-K(L40959329)',
|
||
time: '25/08/28',
|
||
hasRedDot: true,
|
||
),
|
||
MessageItem(
|
||
type: MessageType.accessControl,
|
||
title: '通行权限',
|
||
subtitle: '[通行权限] 下发已结束,成功0条,失败1条,成功0条,失败1条,成功0条,失败1条成功0条,失败1条成功0条,失败1条',
|
||
time: '25/08/26',
|
||
hasRedDot: false,
|
||
),
|
||
MessageItem(
|
||
type: MessageType.systemNotice,
|
||
title: '系统通知',
|
||
subtitle: '没有新的消息没有新的消息没有新的消息没有新的消息没有新的消息没有新的消息没有新的消息没有新的消息没有新的消息没有新的消息没有新的消息',
|
||
time: '',
|
||
hasRedDot: false,
|
||
),
|
||
];
|
||
}
|
||
|
||
// 刷新消息数据
|
||
Future<void> refreshMessages() async {
|
||
// 模拟网络请求延迟
|
||
await Future.delayed(const Duration(seconds: 1));
|
||
|
||
// 这里可以添加实际的API调用
|
||
// 模拟新数据
|
||
_initializeMessages();
|
||
|
||
print('消息数据刷新完成');
|
||
}
|
||
|
||
// 添加新消息
|
||
void addMessage(MessageItem message) {
|
||
messageList.insert(0, message);
|
||
}
|
||
|
||
// 移除消息
|
||
void removeMessage(int index) {
|
||
if (index >= 0 && index < messageList.length) {
|
||
messageList.removeAt(index);
|
||
}
|
||
}
|
||
|
||
// 清除所有未读标记
|
||
void clearAllUnread() {
|
||
for (int i = 0; i < messageList.length; i++) {
|
||
if (messageList[i].hasRedDot) {
|
||
messageList[i] = messageList[i].copyWith(hasRedDot: false);
|
||
}
|
||
}
|
||
messageList.refresh();
|
||
}
|
||
}
|