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
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)],
|
|
),
|
|
];
|
|
|