Browse Source

refactor(agent_view): 添加用户消息的复制

newdev_shunjiawei
lxm 1 year ago
parent
commit
60e1af4a33
  1. 249
      lib/modules/agent/views/agent_view.dart

249
lib/modules/agent/views/agent_view.dart

@ -168,34 +168,22 @@ class AgentView extends StatelessWidget {
final message = controller final message = controller
.messages[controller.messages.length - 1 - index]; .messages[controller.messages.length - 1 - index];
return Padding( return Padding(
padding: const EdgeInsets.only(bottom: 8), padding: const EdgeInsets.only(bottom: 8),
child: !message.isUser child: GestureDetector(
? GestureDetector( onLongPressStart: (LongPressStartDetails details) {
onLongPressStart: _onLongPressMessageContent(
(LongPressStartDetails details) { context, isDarkMode, details, message);
_onLongPressMessageContent( },
context, isDarkMode, details, message); child: MessageBubble(
}, isUser: message.isUser,
child: MessageBubble( message: message.text,
isUser: message.isUser, timestamp: message.timestamp,
message: message.text, isRecognizing: message.isRecognizing,
timestamp: message.timestamp, hasImage: message.hasImage,
isRecognizing: message.isRecognizing, imagePath: message.imagePath,
hasImage: message.hasImage, meta: message.meta,
imagePath: message.imagePath, ),
meta: message.meta, ));
),
)
: MessageBubble(
isUser: message.isUser,
message: message.text,
timestamp: message.timestamp,
isRecognizing: message.isRecognizing,
hasImage: message.hasImage,
imagePath: message.imagePath,
meta: message.meta,
),
);
}, },
), ),
), ),
@ -602,164 +590,36 @@ class AgentView extends StatelessWidget {
)); ));
}, },
), ),
// 自定义分隔线样式 if (!message.isUser) ...[
PopupMenuItem( // 自定义分隔线样式
height: 1, // 控制间距 PopupMenuItem(
enabled: false, height: 1, // 控制间距
child: Divider( enabled: false,
height: 1, child: Divider(
thickness: 0.8, height: 1,
indent: 0, thickness: 0.8,
endIndent: 0, indent: 0,
color: isDarkMode ? Colors.grey[700] : Colors.grey[300], endIndent: 0,
color: isDarkMode ? Colors.grey[700] : Colors.grey[300],
),
), ),
), _popupMenuEntry(
_popupMenuEntry( Icon(
Icon( Icons.report,
Icons.report, size: 20.w,
size: 20.w, color: isDarkMode ? Colors.red[700] : Colors.red,
color: isDarkMode ? Colors.red[700] : Colors.red, ),
'举报'.tr, // 举报
isDarkMode ? Colors.red[700]! : Colors.red,
() {
// 实现举报功能
final reportController = Get.find<ReportController>();
reportController.initReport(message);
_showReportForm(context, isDarkMode);
},
), ),
'举报'.tr, // 举报 ]
isDarkMode ? Colors.red[700]! : Colors.red,
() {
// 实现举报功能
final reportController = Get.find<ReportController>();
reportController.initReport(message);
_showReportForm(context, isDarkMode);
// showModalBottomSheet(
// context: context,
// isScrollControlled: true, // 关键:允许弹窗随键盘移动
// backgroundColor:
// isDarkMode ? AppColors.cardBackground : Colors.white,
// shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.vertical(top: Radius.circular(16.r)),
// ),
// builder: (BuildContext context) {
// return Padding(
// // 添加底部内边距以容纳键盘
// padding: EdgeInsets.only(
// bottom: MediaQuery.of(context).viewInsets.bottom,
// ),
// child: Container(
// padding: EdgeInsets.all(16.w),
// child: SingleChildScrollView(
// // 添加滚动视图
// child: Column(
// mainAxisSize: MainAxisSize.min,
// crossAxisAlignment: CrossAxisAlignment.stretch,
// children: [
// Stack(
// alignment: Alignment.center,
// children: [
// Center(
// child: Text(
// '举报',
// style: TextStyle(
// fontSize: 18.sp,
// fontWeight: FontWeight.bold,
// color: isDarkMode
// ? Colors.white
// : Colors.black,
// ),
// ),
// ),
// SizedBox(
// height: 20.w,
// ),
// Positioned(
// right: 0,
// child: IconButton(
// icon: Icon(
// Icons.close,
// color: isDarkMode
// ? Colors.grey[400]
// : Colors.black54,
// ),
// onPressed: () => Navigator.pop(context),
// ),
// ),
// ],
// ),
// Container(
// padding: EdgeInsets.symmetric(horizontal: 12.w),
// margin: EdgeInsets.only(bottom: 10.w),
// child: Divider(
// height: 1,
// color: Colors.grey[300],
// ),
// ),
// Wrap(
// spacing: 8.w,
// runSpacing: 8.h,
// children: [
// _buildReportChip('有害/不安全', isDarkMode),
// _buildReportChip('色情低俗', isDarkMode),
// _buildReportChip('误导攻击', isDarkMode),
// _buildReportChip('违法犯罪', isDarkMode),
// _buildReportChip('隐私相关', isDarkMode),
// _buildReportChip('侵犯我的著作权、名誉权等', isDarkMode),
// _buildReportChip('其他', isDarkMode),
// ],
// ),
// SizedBox(height: 16.h),
// Container(
// padding: EdgeInsets.all(12.w),
// decoration: BoxDecoration(
// color: isDarkMode
// ? Colors.grey[800]
// : Colors.grey[200],
// borderRadius: BorderRadius.circular(8.r),
// ),
// child: TextField(
// maxLines: 3,
// style: TextStyle(
// color: isDarkMode ? Colors.white : Colors.black,
// ),
// decoration: InputDecoration(
// hintText: '我们想知道你举报的原因,你可以描述你遇到的问题。',
// hintStyle: TextStyle(
// color: isDarkMode
// ? Colors.white70
// : Colors.black54,
// fontSize: 14.sp,
// ),
// border: InputBorder.none,
// ),
// ),
// ),
// SizedBox(height: 14.h),
// ElevatedButton(
// style: ElevatedButton.styleFrom(
// backgroundColor: Colors.blue,
// foregroundColor: Colors.white,
// padding: EdgeInsets.symmetric(vertical: 12.h),
// shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.circular(8.r),
// ),
// ),
// child: Text('提交'),
// onPressed: () {
// Navigator.pop(context);
// Get.snackbar(
// '提示',
// '举报已提交,我们会尽快处理',
// backgroundColor: Colors.green.withOpacity(0.8),
// colorText: Colors.white,
// );
// },
// ),
// SizedBox(height: 8.h),
// ],
// ),
// ),
// ),
// );
// },
// );
},
),
], ],
); );
} }
@ -784,27 +644,6 @@ class AgentView extends StatelessWidget {
); );
} }
// // 添加这个辅助方法来创建举报选项
// Widget _buildReportChip(String label, bool isDarkMode) {
// return ChoiceChip(
// label: Text(
// label,
// style: TextStyle(
// color: isDarkMode ? Colors.white : Colors.black87,
// fontSize: 14.sp,
// ),
// ),
// selected: false,
// backgroundColor: isDarkMode ? Colors.grey[800] : Colors.grey[200],
// shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.circular(16.r),
// ),
// onSelected: (bool selected) {
// // 可以在这里处理选择逻辑
// },
// );
// }
PopupMenuEntry _popupMenuEntry( PopupMenuEntry _popupMenuEntry(
Icon icon, Icon icon,
String title, String title,

Loading…
Cancel
Save