Browse Source

feat(翻译历史): 添加时间和语种显示并优化布局

在翻译历史列表中新增时间和语种信息的显示,包括:
1. 格式化显示时间(今天显示时间,其他日期显示月日时间)
2. 添加源语言和目标语言的显示(使用双向箭头符号)
3. 调整列表项布局为顶部对齐
4. 移除翻译详情页中暂时不需要的"记录摘要"标签页
weicu
lxm 1 year ago
parent
commit
6d28c7ce82
  1. 35
      lib/modules/translation/views/translation_detail_view.dart
  2. 60
      lib/modules/translation/views/translation_history_view.dart

35
lib/modules/translation/views/translation_detail_view.dart

@ -72,14 +72,14 @@ class TranslationDetailView extends GetView<TranslationDetailController> {
), ),
onPressed: () => Get.back(), onPressed: () => Get.back(),
), ),
title: Text( // title: Text(
'Detail', // 'Detail',
style: TextStyle( // style: TextStyle(
color: isDarkMode ? Colors.white : Colors.black, // color: isDarkMode ? Colors.white : Colors.black,
fontSize: 24.sp, // fontSize: 24.sp,
fontWeight: FontWeight.bold, // fontWeight: FontWeight.bold,
), // ),
), // ),
centerTitle: true, centerTitle: true,
actions: [ actions: [
IconButton( IconButton(
@ -108,15 +108,16 @@ class TranslationDetailView extends GetView<TranslationDetailController> {
isDarkMode: isDarkMode, isDarkMode: isDarkMode,
)), )),
), ),
SizedBox(width: 12.w), //屏蔽“记录摘要”,需要是开启
Expanded( // SizedBox(width: 12.w),
child: Obx(() => _buildTabButton( // Expanded(
title: '记录摘要', // child: Obx(() => _buildTabButton(
isSelected: controller.selectedTabIndex.value == 1, // title: '记录摘要',
onTap: () => controller.switchTab(1), // isSelected: controller.selectedTabIndex.value == 1,
isDarkMode: isDarkMode, // onTap: () => controller.switchTab(1),
)), // isDarkMode: isDarkMode,
), // )),
// ),
], ],
), ),
); );

60
lib/modules/translation/views/translation_history_view.dart

@ -1,11 +1,13 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:intl/intl.dart';
import '../controllers/translation_controller.dart'; import '../controllers/translation_controller.dart';
import '../controllers/translation_history_controller.dart'; import '../controllers/translation_history_controller.dart';
import '../bindings/translation_detail_binding.dart'; import '../bindings/translation_detail_binding.dart';
import 'translation_detail_view.dart'; import 'translation_detail_view.dart';
import '../../../core/theme/app_colors.dart'; import '../../../core/theme/app_colors.dart';
import '../../../data/services/language_manager.dart';
class TranslationHistoryView extends GetView<TranslationHistoryController> { class TranslationHistoryView extends GetView<TranslationHistoryController> {
const TranslationHistoryView({Key? key}) : super(key: key); const TranslationHistoryView({Key? key}) : super(key: key);
@ -116,7 +118,7 @@ class TranslationHistoryView extends GetView<TranslationHistoryController> {
child: Padding( child: Padding(
padding: EdgeInsets.symmetric(horizontal: 20.w, vertical: 16.h), padding: EdgeInsets.symmetric(horizontal: 20.w, vertical: 16.h),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Expanded( Expanded(
child: Column( child: Column(
@ -144,9 +146,36 @@ class TranslationHistoryView extends GetView<TranslationHistoryController> {
maxLines: 2, maxLines: 2,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
SizedBox(height: 8.h),
// 时间和语种信息行
Row(
children: [
// 时间信息
Text(
_formatSessionTime(item.timestamp),
style: TextStyle(
fontSize: 12.sp,
color: isDarkMode ? Colors.grey[500] : Colors.grey[600],
),
),
SizedBox(width: 12.w),
// 语种信息
Expanded(
child: Text(
_formatLanguagePair(item),
style: TextStyle(
fontSize: 12.sp,
color: isDarkMode ? Colors.grey[500] : Colors.grey[600],
),
overflow: TextOverflow.ellipsis,
),
),
],
),
], ],
), ),
), ),
SizedBox(width: 12.w),
Icon( Icon(
Icons.chevron_right, Icons.chevron_right,
color: isDarkMode ? Colors.grey[600] : Colors.grey[350], color: isDarkMode ? Colors.grey[600] : Colors.grey[350],
@ -161,7 +190,7 @@ class TranslationHistoryView extends GetView<TranslationHistoryController> {
void _showTranslationDetail(TranslationItem item) { void _showTranslationDetail(TranslationItem item) {
// 获取该会话的所有翻译项 // 获取该会话的所有翻译项
final List<TranslationItem> sessionItems = controller.getSessionItems(item.sessionId); final List<TranslationItem> sessionItems = controller.getSessionItems(item.sessionId);
Get.to( Get.to(
() => TranslationDetailView(), () => TranslationDetailView(),
arguments: { arguments: {
@ -173,6 +202,33 @@ class TranslationHistoryView extends GetView<TranslationHistoryController> {
); );
} }
// 格式化会话时间
String _formatSessionTime(DateTime timestamp) {
final now = DateTime.now();
final today = DateTime(now.year, now.month, now.day);
final itemDate = DateTime(timestamp.year, timestamp.month, timestamp.day);
if (itemDate == today) {
// 今天:只显示时间 HH:mm
return DateFormat('HH:mm').format(timestamp);
} else {
// 其他日期:显示月日和时间 MM-dd HH:mm
return DateFormat('MM-dd HH:mm').format(timestamp);
}
}
// 格式化语种对信息
String _formatLanguagePair(TranslationItem item) {
final languageManager = Get.find<LanguageManager>();
// 获取源语言和目标语言的中文名称
final sourceName = languageManager.getChineseNameByAsrCode(item.sourceLanguageCode) ?? '未知语言';
final targetName = languageManager.getChineseNameByAsrCode(item.targetLanguageCode) ?? '未知语言';
// 使用双向箭头符号表示翻译方向
return '$sourceName ⇄ $targetName';
}
void _showClearHistoryConfirmDialog() { void _showClearHistoryConfirmDialog() {
final isDarkMode = Get.isDarkMode; final isDarkMode = Get.isDarkMode;

Loading…
Cancel
Save