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.
 
 
 
 
 
 

87 lines
2.8 KiB

import 'package:device_plugin_interface/device_plugin_interface.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../routes/app_routes.dart';
import '../home/controllers/home_controller.dart';
import '../module_descriptor.dart';
import 'bindings/translation_binding.dart';
import 'bindings/translation_history_binding.dart';
import 'bindings/translation_list_binding.dart';
import 'middleware/bindings/translation_middleware_binding.dart';
import 'middleware/views/translation_middleware_view.dart';
import 'views/translation_history_view.dart';
import 'views/translation_list_view.dart';
import 'views/translation_view.dart';
GetPage _p(String name, GetPageBuilder page, Bindings binding) => GetPage(
name: name,
page: page,
binding: binding,
transition: Transition.rightToLeft,
transitionDuration: const Duration(milliseconds: 250),
);
/// 翻译模块的页面,四个入口共用
final List<GetPage> _translationPages = [
_p(Routes.translationMiddleware, () => const TranslationMiddlewareView(),
TranslationMiddlewareBinding()),
_p(Routes.translation, () => const TranslationView(), TranslationBinding()),
_p(Routes.translationHistory, () => const TranslationHistoryView(),
TranslationHistoryBinding()),
_p(Routes.translationList, () => const TranslationListView(),
TranslationListBinding()),
];
AgentModuleDescriptor _mode({
required String id,
required String title,
required String subtitle,
required IconData icon,
required List<Color> gradient,
Set<DeviceCapability> caps = const {},
}) =>
AgentModuleDescriptor(
id: id,
title: title,
subtitle: subtitle,
icon: icon,
gradient: gradient,
requiredCapabilities: caps,
onLaunch: () => HomeController.to.openTranslationFeature(id),
pages: _translationPages,
);
/// 同声翻译 / 面对面翻译 / 通话翻译 / 多媒体翻译——同一个翻译页的四种模式
final List<AgentModuleDescriptor> translationModules = [
_mode(
id: 'simultaneous',
title: 'agentSimultaneous',
subtitle: 'agentSimultaneousDesc',
icon: Icons.record_voice_over,
gradient: const [Color(0xFF4CAF50), Color(0xFF009688)],
),
_mode(
id: 'faceToFace',
title: 'agentFaceToFace',
subtitle: 'agentFaceToFaceDesc',
icon: Icons.forum,
gradient: const [Color(0xFF42A5F5), Color(0xFF1E88E5)],
),
_mode(
id: 'call',
title: 'agentCall',
subtitle: 'agentCallDesc',
icon: Icons.phone_in_talk,
gradient: const [Color(0xFFFFA726), Color(0xFFFB8C00)],
// 通话翻译要抓通话双路音频
caps: const {DeviceCapability.callAudioTap},
),
_mode(
id: 'audioVideo',
title: 'agentAudioVideo',
subtitle: 'agentAudioVideoDesc',
icon: Icons.slideshow,
gradient: const [Color(0xFF5C6BC0), Color(0xFF3949AB)],
),
];