From 957f5e133c91955b084cdaa8a972914c651c1fea Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Thu, 22 May 2025 20:36:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E6=B6=88=E6=81=AF=E7=82=B9=E5=87=BB=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在消息气泡中点击图片时,打开全屏图片查看器。新增 `photo_view` 依赖并实现 `openImageViewer` 方法,提升用户体验。 --- .../agent/controllers/agent_controller.dart | 25 +++++++++++ lib/modules/agent/views/message_bubble.dart | 42 ++++++++++++------- pubspec.yaml | 1 + 3 files changed, 54 insertions(+), 14 deletions(-) diff --git a/lib/modules/agent/controllers/agent_controller.dart b/lib/modules/agent/controllers/agent_controller.dart index 990daad8c..b2a387879 100644 --- a/lib/modules/agent/controllers/agent_controller.dart +++ b/lib/modules/agent/controllers/agent_controller.dart @@ -15,6 +15,7 @@ import 'package:permission_handler/permission_handler.dart'; import 'package:app_settings/app_settings.dart'; import 'package:deep_voice/core/utils/logger.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:photo_view/photo_view.dart'; class Message { final bool isUser; //标识信息是否来自用户还是AI @@ -959,4 +960,28 @@ class AgentController extends GetxController { void openNavigation(String start, String end, String ntype) { _navigationManager.open(start, end, ntype); } + + // 打开图片查看器 + void openImageViewer(BuildContext context, String imagePath) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => Scaffold( + appBar: AppBar( + backgroundColor: Colors.black, + iconTheme: IconThemeData(color: Colors.white), + ), + body: Container( + color: Colors.black, + child: PhotoView( + imageProvider: FileImage(File(imagePath)), + minScale: PhotoViewComputedScale.contained, + maxScale: PhotoViewComputedScale.covered * 2, + backgroundDecoration: BoxDecoration(color: Colors.black), + ), + ), + ), + ), + ); + } } diff --git a/lib/modules/agent/views/message_bubble.dart b/lib/modules/agent/views/message_bubble.dart index 14964195b..94bbb5415 100644 --- a/lib/modules/agent/views/message_bubble.dart +++ b/lib/modules/agent/views/message_bubble.dart @@ -215,13 +215,20 @@ class MessageBubble extends GetView { if (message == '[图片]') { return Container( padding: const EdgeInsets.all(8), - child: ClipRRect( - borderRadius: BorderRadius.circular(12), - child: Image.file( - File(imagePath!), - width: 200, - height: 200, - fit: BoxFit.cover, + child: GestureDetector( + onTap: () { + // 点击图片时打开图片查看器 + Get.find() + .openImageViewer(context, imagePath ?? ''); + }, + child: ClipRRect( + borderRadius: BorderRadius.circular(12), + child: Image.file( + File(imagePath!), + width: 200, + height: 200, + fit: BoxFit.cover, + ), ), ), ); @@ -241,13 +248,20 @@ class MessageBubble extends GetView { ), ), const SizedBox(height: 8), - ClipRRect( - borderRadius: BorderRadius.circular(12), - child: Image.file( - File(imagePath!), - width: 200, - height: 200, - fit: BoxFit.cover, + GestureDetector( + onTap: () { + // 点击图片时打开图片查看器 + Get.find() + .openImageViewer(context, imagePath ?? ''); + }, + child: ClipRRect( + borderRadius: BorderRadius.circular(12), + child: Image.file( + File(imagePath!), + width: 200, + height: 200, + fit: BoxFit.cover, + ), ), ), ], diff --git a/pubspec.yaml b/pubspec.yaml index 94783cbd4..fd7ad853a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,6 +37,7 @@ dependencies: file_picker: ^10.1.5 haptic_feedback: ^0.5.1+1 tencentcloud_cos_sdk_plugin: ^1.2.3 + photo_view: ^0.15.0 window_size: git: From 71bf66ad5137fc6e776c202d918c02dc801a49fa Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Fri, 23 May 2025 14:17:21 +0800 Subject: [PATCH 2/3] =?UTF-8?q?refactor(explore):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E6=9C=AA=E4=BD=BF=E7=94=A8=E7=9A=84=E5=AF=BC=E5=85=A5=E5=B9=B6?= =?UTF-8?q?=E6=9B=B4=E6=96=B0AI=E5=8A=9F=E8=83=BD=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除`explore_view.dart`中未使用的`dart:ui`导入,并更新`explore_controller.dart`中的AI功能路由,将`chat`路由更改为`agent`路由,以提高代码清晰度和一致性。 --- .../explore/controllers/explore_controller.dart | 12 +++++++----- lib/modules/explore/views/explore_view.dart | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/modules/explore/controllers/explore_controller.dart b/lib/modules/explore/controllers/explore_controller.dart index f250cc7e3..3d0af7ee9 100644 --- a/lib/modules/explore/controllers/explore_controller.dart +++ b/lib/modules/explore/controllers/explore_controller.dart @@ -54,19 +54,19 @@ class ExploreController extends GetxController { // AI功能列表 final List aiFeatures = [ AIFeature( - title: 'allRoundAssistant'.tr, // 全能助理 - description: 'allRoundAssistantInfo'.tr, // 帮你解决各类问题 + title: 'aiAssistant'.tr, // AI全能助手 + description: 'aiAssistantInfo'.tr, // 帮你解决各类问题 icon: Icons.assistant, startColor: const Color(0xFF0066CC), endColor: const Color(0xFF5E5CE6), iconBgColor: const Color(0xFF0066CC).withOpacity(0.2), iconColor: const Color(0xFF0066CC), agentId: 'personal_assistant', - targetRoute: Routes.chat, + targetRoute: Routes.agent, ), AIFeature( - title: 'simultaneousTranslation'.tr, // 同声翻译 - description: 'simultaneousTranslationInfo'.tr, // 实时翻译80+种语言 + title: 'simultaneousInterpretation'.tr, // 同声翻译 + description: 'simultaneousInterpretationInfo'.tr, // 实时翻译80+种语言 icon: Icons.translate, startColor: const Color(0xFF4CAF50), endColor: const Color(0xFF009688), @@ -175,6 +175,8 @@ class ExploreController extends GetxController { } else if (feature.targetRoute == Routes.translation) { // 跳转到翻译页面 Get.toNamed(feature.targetRoute); + } else if (feature.targetRoute == Routes.agent) { + Get.toNamed(feature.targetRoute); } } diff --git a/lib/modules/explore/views/explore_view.dart b/lib/modules/explore/views/explore_view.dart index df227549b..0f076f6e9 100644 --- a/lib/modules/explore/views/explore_view.dart +++ b/lib/modules/explore/views/explore_view.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; -import 'dart:ui'; +//import 'dart:ui'; import '../controllers/explore_controller.dart'; import '../../../core/widgets/common_bottom_nav.dart'; From 9b2cb3933e9b9d8caed787360ca9bd66b8be8d13 Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Fri, 23 May 2025 20:31:14 +0800 Subject: [PATCH 3/3] =?UTF-8?q?docs(nw=5Fapi):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=9C=8D=E5=8A=A1=E5=99=A8=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E7=9A=84=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加测试服务器链接地址的注释,说明其经常变动,供开发使用 --- lib/data/services/network/nw_api.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/data/services/network/nw_api.dart b/lib/data/services/network/nw_api.dart index 8feff1db5..c5ed95dd8 100644 --- a/lib/data/services/network/nw_api.dart +++ b/lib/data/services/network/nw_api.dart @@ -1,5 +1,6 @@ class NWApi { // static const baseApi = "https://www.deapsound.com"; + //测试服务器链接地址,经常修改变动,开发使用 static const baseApi = "https://api.deapsound.com"; // static const baseApi = "https://api.ideapsound.com"; }