import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:hive/hive.dart'; import 'package:pilipala/http/msg.dart'; import 'package:pilipala/models/msg/session.dart'; import '../../utils/feed_back.dart'; import '../../utils/storage.dart'; class WhisperDetailController extends GetxController { late int talkerId; late String name; late String face; late String mid; RxList messageList = [].obs; //表情转换图片规则 List? eInfos; final TextEditingController replyContentController = TextEditingController(); Box userInfoCache = GStrorage.userInfo; @override void onInit() { super.onInit(); talkerId = int.parse(Get.parameters['talkerId']!); name = Get.parameters['name']!; face = Get.parameters['face']!; mid = Get.parameters['mid']!; } Future querySessionMsg() async { var res = await MsgHttp.sessionMsg(talkerId: talkerId); if (res['status']) { messageList.value = res['data'].messages; if (messageList.isNotEmpty) { ackSessionMsg(); if (res['data'].eInfos != null) { eInfos = res['data'].eInfos; } } } else { SmartDialog.showToast(res['msg']); } return res; } // 消息标记已读 Future ackSessionMsg() async { if (messageList.isEmpty) { return; } await MsgHttp.ackSessionMsg( talkerId: talkerId, ackSeqno: messageList.last.msgSeqno, ); } Future sendMsg() async { feedBack(); String message = replyContentController.text; final userInfo = userInfoCache.get('userInfoCache'); if (userInfo == null) { SmartDialog.showToast('请先登录'); return; } if (message == '') { SmartDialog.showToast('请输入内容'); return; } var result = await MsgHttp.sendMsg( senderUid: userInfo.mid, receiverId: int.parse(mid), content: {'content': message}, msgType: 1, ); if (result['status']) { SmartDialog.showToast('发送成功'); } else { SmartDialog.showToast(result['msg']); } } }