You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.5 KiB
78 lines
2.5 KiB
import 'package:get/get.dart';
|
|
import 'package:flutter/material.dart';
|
|
import '../../../../routes/app_routes.dart';
|
|
|
|
/// 翻译中间层控制器
|
|
/// 负责管理翻译功能入口的导航和状态
|
|
class TranslationMiddlewareController extends GetxController {
|
|
/// 翻译功能选项列表
|
|
final List<TranslationOption> translationOptions = [
|
|
TranslationOption(
|
|
translationId: 'simultaneous',
|
|
title: 'simultaneousTranslation', // 实时翻译
|
|
description: 'realtimeTranslationDescription', // 实时语音翻译,支持多种语言
|
|
icon: Icons.record_voice_over,
|
|
iconColor: 0xFF2196F3, // 蓝色
|
|
targetRoute: Routes.translation,
|
|
),
|
|
TranslationOption(
|
|
translationId: 'call',
|
|
title: 'callTranslation', // 电话翻译
|
|
description: 'simultaneousTranslationInfo', // 双向对话翻译,面对面交流
|
|
icon: Icons.call,
|
|
iconColor: 0xFF4CAF50, // 绿色
|
|
targetRoute: Routes.translation,
|
|
),
|
|
TranslationOption(
|
|
translationId: 'faceToFace',
|
|
title: 'faceToFaceTranslation', // 面对面翻译
|
|
description: 'faceToFaceTranslationDescription', // 面对面交流,支持多种语言
|
|
icon: Icons.people,
|
|
iconColor: 0xFFFF9800, // 橙色
|
|
targetRoute: Routes.translation,
|
|
),
|
|
TranslationOption(
|
|
translationId: 'audioVideo',
|
|
title: 'audioVideoTranslation', // 音频视频翻译
|
|
description: 'audioVideoTranslationDescription', // 支持音频和视频翻译
|
|
icon: Icons.videocam,
|
|
iconColor: 0xFF9C27B0, // 紫色
|
|
targetRoute: Routes.translation,
|
|
),
|
|
];
|
|
|
|
/// 导航到指定的翻译功能
|
|
void navigateToTranslationFeature(TranslationOption option) {
|
|
Get.toNamed(option.targetRoute,
|
|
arguments: {'translationId': option.translationId});
|
|
}
|
|
|
|
/// 获取翻译选项的本地化标题
|
|
String getLocalizedTitle(TranslationOption option) {
|
|
return option.title.tr;
|
|
}
|
|
|
|
/// 获取翻译选项的本地化描述
|
|
String getLocalizedDescription(TranslationOption option) {
|
|
return option.description.tr;
|
|
}
|
|
}
|
|
|
|
/// 翻译功能选项数据模型
|
|
class TranslationOption {
|
|
final String translationId;
|
|
final String title;
|
|
final String description;
|
|
final IconData icon;
|
|
final int iconColor;
|
|
final String targetRoute;
|
|
|
|
TranslationOption({
|
|
required this.translationId,
|
|
required this.title,
|
|
required this.description,
|
|
required this.icon,
|
|
required this.iconColor,
|
|
required this.targetRoute,
|
|
});
|
|
}
|
|
|