starwork_flutter/lib/views/messages/messages_controller.dart

82 lines
2.3 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
}