mod: 系统消息
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:pilipala/http/msg.dart';
|
||||
import 'package:pilipala/models/msg/system.dart';
|
||||
@ -5,18 +6,44 @@ import 'package:pilipala/models/msg/system.dart';
|
||||
class MessageSystemController extends GetxController {
|
||||
RxList<MessageSystemModel> systemItems = <MessageSystemModel>[].obs;
|
||||
|
||||
Future queryMessageSystem({String type = 'init'}) async {
|
||||
var res = await MsgHttp.messageSystem();
|
||||
if (res['status']) {
|
||||
if (type == 'init') {
|
||||
systemItems.value = res['data'];
|
||||
} else {
|
||||
systemItems.addAll(res['data']);
|
||||
}
|
||||
Future<void> queryAndProcessMessages({String type = 'init'}) async {
|
||||
// 并行调用两个接口
|
||||
var results = await Future.wait([
|
||||
queryMessageSystem(type: type),
|
||||
queryMessageSystemAccount(type: type),
|
||||
]);
|
||||
|
||||
// 对返回的数据进行处理
|
||||
var systemRes = results[0];
|
||||
var accountRes = results[1];
|
||||
|
||||
if (systemRes['status'] || accountRes['status']) {
|
||||
// 处理返回的数据
|
||||
List<MessageSystemModel> combinedData = [
|
||||
...systemRes['data'],
|
||||
...accountRes['data']
|
||||
];
|
||||
combinedData.sort((a, b) => b.cursor!.compareTo(a.cursor!));
|
||||
systemItems.addAll(combinedData);
|
||||
systemItems.refresh();
|
||||
if (systemItems.isNotEmpty) {
|
||||
systemMarkRead(systemItems.first.cursor!);
|
||||
}
|
||||
} else {
|
||||
SmartDialog.showToast(systemRes['msg'] ?? accountRes['msg']);
|
||||
}
|
||||
return systemRes;
|
||||
}
|
||||
|
||||
// 获取系统消息
|
||||
Future queryMessageSystem({String type = 'init'}) async {
|
||||
var res = await MsgHttp.messageSystem();
|
||||
return res;
|
||||
}
|
||||
|
||||
// 获取系统消息 个人
|
||||
Future queryMessageSystemAccount({String type = 'init'}) async {
|
||||
var res = await MsgHttp.messageSystemAccount();
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ class _MessageSystemPageState extends State<MessageSystemPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_futureBuilderFuture = _messageSystemCtr.queryMessageSystem();
|
||||
_futureBuilderFuture = _messageSystemCtr.queryAndProcessMessages();
|
||||
}
|
||||
|
||||
@override
|
||||
@ -31,7 +31,7 @@ class _MessageSystemPageState extends State<MessageSystemPage> {
|
||||
),
|
||||
body: RefreshIndicator(
|
||||
onRefresh: () async {
|
||||
await _messageSystemCtr.queryMessageSystem();
|
||||
await _messageSystemCtr.queryAndProcessMessages();
|
||||
},
|
||||
child: FutureBuilder(
|
||||
future: _futureBuilderFuture,
|
||||
@ -42,7 +42,6 @@ class _MessageSystemPageState extends State<MessageSystemPage> {
|
||||
}
|
||||
if (snapshot.data['status']) {
|
||||
final systemItems = _messageSystemCtr.systemItems;
|
||||
print(systemItems.length);
|
||||
return Obx(
|
||||
() => ListView.separated(
|
||||
controller: scrollController,
|
||||
@ -115,7 +114,7 @@ class SystemItem extends StatelessWidget {
|
||||
style: TextStyle(color: Theme.of(context).colorScheme.outline),
|
||||
),
|
||||
const SizedBox(height: 6),
|
||||
Text(item.content!['web']),
|
||||
Text(item.content is String ? item.content : item.content!['web']),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
Reference in New Issue
Block a user