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 _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 gradient, Set caps = const {}, }) => AgentModuleDescriptor( id: id, title: title, subtitle: subtitle, icon: icon, gradient: gradient, requiredCapabilities: caps, onLaunch: () => HomeController.to.openTranslationFeature(id), pages: _translationPages, ); /// 同声翻译 / 面对面翻译 / 通话翻译 / 多媒体翻译——同一个翻译页的四种模式 final List 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)], ), ];