From de92fe21642b2f01be07b9a09a6dcc7cd1d2735d Mon Sep 17 00:00:00 2001 From: tanlongsheng <252620078@qq.com> Date: Thu, 29 May 2025 10:52:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=95=86=E5=8A=A1=E4=BC=9A?= =?UTF-8?q?=E8=AE=AE=E5=8A=A9=E6=89=8B=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/services/db/sqflite_api.dart | 16 ++++++- .../controllers/meeting_controller.dart | 1 + .../meeting_details_controller.dart | 16 +++++++ lib/modules/meeting/model/meeting_model.dart | 3 ++ .../meeting/views/meeting_details_view.dart | 13 +++--- lib/modules/meeting/views/meeting_view.dart | 42 +++++++++++++------ 6 files changed, 72 insertions(+), 19 deletions(-) diff --git a/lib/data/services/db/sqflite_api.dart b/lib/data/services/db/sqflite_api.dart index faf8c639b..3e13d639a 100644 --- a/lib/data/services/db/sqflite_api.dart +++ b/lib/data/services/db/sqflite_api.dart @@ -7,12 +7,25 @@ class SqfliteApi { // 获取商务会议助手列表 static Future getMeetingList(int page) async { final db = await DatabaseHelper().database; - return await db.query( + List> dataList = []; + List meetingList = await db.query( 'meeting', limit: 10, offset: (page - 1) * 10, orderBy: 'creationtime DESC', ); + for (var element in meetingList) { + final List detailsList = await db.query( + 'meetingdetails', + where: 'meetingid = ?', + whereArgs: [element['id']], + ); + dataList.add({ + ...element, + 'tasktype': detailsList.first['tasktype'], + }); + } + return dataList; } // 获取商务会议助手详情 @@ -27,6 +40,7 @@ class SqfliteApi { ); return { ...meetingList.first, + 'tasktype': detailsList.first['tasktype'], 'details': detailsList.first }; } diff --git a/lib/modules/meeting/controllers/meeting_controller.dart b/lib/modules/meeting/controllers/meeting_controller.dart index 8b2550838..520225296 100644 --- a/lib/modules/meeting/controllers/meeting_controller.dart +++ b/lib/modules/meeting/controllers/meeting_controller.dart @@ -85,6 +85,7 @@ class MeetingController extends GetxController { if (meetingId != null) { dataList.insert(0, { 'id': meetingId, + 'tasktype': 0, ...data, }); } diff --git a/lib/modules/meeting/controllers/meeting_details_controller.dart b/lib/modules/meeting/controllers/meeting_details_controller.dart index 9bab0f952..ebec7e774 100644 --- a/lib/modules/meeting/controllers/meeting_details_controller.dart +++ b/lib/modules/meeting/controllers/meeting_details_controller.dart @@ -16,6 +16,7 @@ import '../../../data/services/db/sqflite_api.dart'; import '../../../data/services/deapsound_ai_service.dart'; import '../model/meeting_details_model.dart'; import '../model/meeting_model.dart'; +import 'meeting_controller.dart'; class MeetingDetailsController extends GetxController with GetTickerProviderStateMixin { @@ -24,6 +25,8 @@ class MeetingDetailsController extends GetxController late AnimationController lottieController; + final _meetingController = Get.find(); + final PlayerController playerController = PlayerController(); RxBool isTop = false.obs; RxInt durationMax = 0.obs; @@ -89,6 +92,19 @@ class MeetingDetailsController extends GetxController super.onClose(); } + void popInvokedWithResult(didPop, result) { + if (meetingData.value.tasktype != meetingDetails.value.tasktype) { + int index = + _meetingController.dataList.indexWhere((item) => item['id'] == id); + if (index != -1) { + final dataMap = + Map.from(_meetingController.dataList[index]); + dataMap['tasktype'] = meetingDetails.value.tasktype; + _meetingController.dataList[index] = dataMap; + } + } + } + void _getAgent() async { final GetStorage storage = GetStorage(); Map userInfo = storage.read("user_info"); diff --git a/lib/modules/meeting/model/meeting_model.dart b/lib/modules/meeting/model/meeting_model.dart index b3b2a7869..186237cb5 100644 --- a/lib/modules/meeting/model/meeting_model.dart +++ b/lib/modules/meeting/model/meeting_model.dart @@ -7,6 +7,7 @@ class MeetingModel { late int seconds; late String filepath; late String audiourl; + late int tasktype; late int creationtime; factory MeetingModel.fromJson(Map map) => MeetingModel() @@ -16,6 +17,7 @@ class MeetingModel { ..seconds = map["seconds"] ..filepath = map["filepath"] ..audiourl = map["audiourl"] + ..tasktype = map["tasktype"] ..creationtime = map["creationtime"]; Map toJson() { @@ -26,6 +28,7 @@ class MeetingModel { data['seconds'] = seconds; data['filepath'] = filepath; data['audiourl'] = audiourl; + data['tasktype'] = tasktype; data['creationtime'] = creationtime; return data; } diff --git a/lib/modules/meeting/views/meeting_details_view.dart b/lib/modules/meeting/views/meeting_details_view.dart index b39309d67..5ce0b6cbc 100644 --- a/lib/modules/meeting/views/meeting_details_view.dart +++ b/lib/modules/meeting/views/meeting_details_view.dart @@ -19,11 +19,14 @@ class MeetingDetailsView extends GetView { Widget build(BuildContext context) { final isDarkMode = Theme.of(context).brightness == Brightness.dark; - return Obx( - () => Scaffold( - backgroundColor: isDarkMode ? Colors.black : Colors.grey[50], - appBar: _buildAppBar(isDarkMode), - body: _buildBody(isDarkMode), + return PopScope( + onPopInvokedWithResult: controller.popInvokedWithResult, + child: Obx( + () => Scaffold( + backgroundColor: isDarkMode ? Colors.black : Colors.grey[50], + appBar: _buildAppBar(isDarkMode), + body: _buildBody(isDarkMode), + ), ), ); } diff --git a/lib/modules/meeting/views/meeting_view.dart b/lib/modules/meeting/views/meeting_view.dart index 8fbf34fbb..ae73e9ac8 100644 --- a/lib/modules/meeting/views/meeting_view.dart +++ b/lib/modules/meeting/views/meeting_view.dart @@ -140,20 +140,36 @@ class MeetingView extends GetView { ], ), ), - Container( - padding: EdgeInsets.symmetric(horizontal: 5.w, vertical: 2.w), - margin: EdgeInsets.only(top: 5.w), - decoration: BoxDecoration( - color: isDarkMode ? Colors.grey[900] : Colors.grey[100], - borderRadius: BorderRadius.circular(4.w), - ), - child: Text( - data.type, - style: TextStyle( - color: isDarkMode ? Colors.grey[400] : Colors.grey[600], - fontSize: 10.sp, + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + padding: EdgeInsets.symmetric(horizontal: 5.w, vertical: 2.w), + margin: EdgeInsets.only(top: 5.w), + decoration: BoxDecoration( + color: isDarkMode ? Colors.grey[900] : Colors.grey[100], + borderRadius: BorderRadius.circular(4.w), + ), + child: Text( + data.type, + style: TextStyle( + color: isDarkMode ? Colors.grey[400] : Colors.grey[600], + fontSize: 10.sp, + ), + ), ), - ), + if (data.tasktype == 1 || data.tasktype == 2) + Padding( + padding: EdgeInsets.only(top: 5.w), + child: Text( + data.tasktype == 1 ? '正在生成...' : '已生成', + style: TextStyle( + color: Colors.blue, + fontSize: 10.sp, + ), + ), + ), + ], ), ], ),