From 2ec449bec4f79db5d86bb3309aab98083a7b1e73 Mon Sep 17 00:00:00 2001 From: tanlongsheng <252620078@qq.com> Date: Thu, 27 Mar 2025 11:56:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BC=9A=E8=AE=AE=E5=8A=A9?= =?UTF-8?q?=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../meeting_details_controller.dart | 3 + .../controllers/meeting_edit_controller.dart | 58 +++++++++++++++---- .../meeting/views/meeting_edit_view.dart | 8 +-- 3 files changed, 52 insertions(+), 17 deletions(-) diff --git a/lib/modules/meeting/controllers/meeting_details_controller.dart b/lib/modules/meeting/controllers/meeting_details_controller.dart index ee4668196..d88b53f28 100644 --- a/lib/modules/meeting/controllers/meeting_details_controller.dart +++ b/lib/modules/meeting/controllers/meeting_details_controller.dart @@ -15,6 +15,8 @@ class MeetingDetailsController extends GetxController Rx meetingData = MeetingModel().obs; Rx dataDetails = MeetingDetailsModel().obs; + int seconds = 0; + RxBool isPlay = false.obs; @override @@ -36,6 +38,7 @@ class MeetingDetailsController extends GetxController final data = await SqfliteApi.getMeetingDetails(id); meetingData.value = MeetingModel.fromJson(data); dataDetails.value = MeetingDetailsModel.fromJson(data['details']); + seconds = meetingData.value.seconds; isLoading.value = false; } diff --git a/lib/modules/meeting/controllers/meeting_edit_controller.dart b/lib/modules/meeting/controllers/meeting_edit_controller.dart index 9dc2fe89a..d24308441 100644 --- a/lib/modules/meeting/controllers/meeting_edit_controller.dart +++ b/lib/modules/meeting/controllers/meeting_edit_controller.dart @@ -2,21 +2,23 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../../../data/services/db/sqflite_api.dart'; -import '../model/meeting_details_model.dart'; -import '../model/meeting_model.dart'; +import 'meeting_controller.dart'; +import 'meeting_details_controller.dart'; class MeetingEditController extends GetxController with GetSingleTickerProviderStateMixin { + final MeetingController meetingController = Get.find(); + final MeetingDetailsController meetingDetailsController = + Get.find(); + late AnimationController lottieController; late TextEditingController titleController; late TextEditingController contentController; - int id = 0; + int creationTime = 0; - RxBool isLoading = true.obs; - Rx meetingData = MeetingModel().obs; - Rx dataDetails = MeetingDetailsModel().obs; + int id = 0; RxBool isPlay = false.obs; @@ -38,16 +40,13 @@ class MeetingEditController extends GetxController } void _getDataDetails() async { - final data = await SqfliteApi.getMeetingDetails(id); - meetingData.value = MeetingModel.fromJson(data); - dataDetails.value = MeetingDetailsModel.fromJson(data['details']); titleController = TextEditingController( - text: meetingData.value.title, + text: meetingDetailsController.meetingData.value.title, ); contentController = TextEditingController( - text: dataDetails.value.content, + text: meetingDetailsController.dataDetails.value.content, ); - isLoading.value = false; + creationTime = meetingDetailsController.meetingData.value.creationtime; } void start() { @@ -59,4 +58,39 @@ class MeetingEditController extends GetxController isPlay.value = true; } } + + void confirm() async { + String content = contentController.text; + String firstContent = + content.length >= 20 ? content.substring(0, 20) : content; + String title = titleController.text.isNotEmpty + ? titleController.text + : meetingDetailsController.meetingData.value.title; + Map data = { + 'title': title, + 'firstContent': firstContent, + 'seconds': meetingDetailsController.seconds, + 'content': contentController.text, + }; + final result = await SqfliteApi.editMeeting(id, data); + if (result != null) { + int index = meetingController.dataList.indexWhere( + (item) => item['id'] == id, + ); + if (index != -1) { + final dataMap = + Map.from(meetingController.dataList[index]); + dataMap['title'] = title; + dataMap['content'] = firstContent; + dataMap['seconds'] = meetingDetailsController.seconds; + meetingController.dataList[index] = dataMap; + } + meetingDetailsController.meetingData.value.title = title; + meetingDetailsController.dataDetails.value.content = + contentController.text; + meetingDetailsController.meetingData.refresh(); + meetingDetailsController.dataDetails.refresh(); + Get.back(); + } + } } diff --git a/lib/modules/meeting/views/meeting_edit_view.dart b/lib/modules/meeting/views/meeting_edit_view.dart index 3e6f6852c..b85e95c7f 100644 --- a/lib/modules/meeting/views/meeting_edit_view.dart +++ b/lib/modules/meeting/views/meeting_edit_view.dart @@ -17,9 +17,7 @@ class MeetingEditView extends GetView { return Scaffold( backgroundColor: isDarkMode ? Colors.black : Colors.grey[50], appBar: _buildAppBar(isDarkMode), - body: Obx(() => !controller.isLoading.value - ? _buildBody(isDarkMode) - : const SizedBox()), + body: _buildBody(isDarkMode), ); } @@ -38,7 +36,7 @@ class MeetingEditView extends GetView { ), actions: [ GestureDetector( - onTap: () {}, + onTap: controller.confirm, child: Padding( padding: EdgeInsets.symmetric( horizontal: 12.w, @@ -105,7 +103,7 @@ class MeetingEditView extends GetView { padding: EdgeInsets.symmetric(vertical: 5.w), child: Text( DateUtil.formatDateMs( - controller.meetingData.value.creationtime, + controller.creationTime, format: DateFormats.y_mo_d_h_m, ), style: TextStyle(