Browse Source

feat(translation): 根据BLE连接状态控制翻译选项可用性

添加选项可用性检查逻辑,没有ble设备连接的时候,通话翻译和音视频翻译不可用
weicu
lxm 12 months ago
parent
commit
44e4bc4d3b
  1. 23
      lib/modules/translation/middleware/controllers/translation_middleware_controller.dart
  2. 10
      lib/modules/translation/middleware/views/translation_middleware_view.dart

23
lib/modules/translation/middleware/controllers/translation_middleware_controller.dart

@ -1,10 +1,14 @@
// import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:get/get.dart';
import 'package:flutter/material.dart';
import '../../../../routes/app_routes.dart';
import '../../../../data/services/ble_manager.dart';
/// 翻译中间层控制器
/// 负责管理翻译功能入口的导航和状态
class TranslationMiddlewareController extends GetxController {
final BleManager bleManager = Get.find<BleManager>(); //获取BLE管理器实例
/// 翻译功能选项列表
final List<TranslationOption> translationOptions = [
TranslationOption(
@ -57,6 +61,15 @@ class TranslationMiddlewareController extends GetxController {
/// 导航到指定的翻译功能
void navigateToTranslationFeature(TranslationOption option) {
// 不可用则提示用户连接设备
if (!isOptionEnabled(option)) {
// 翻译键代表的中文文本内容
Get.snackbar('connectDevice'.tr,
'pleaseConnectDeepSoundDevice'.tr, // 连接设备 / 请连接 Voitrans 设备
snackPosition: SnackPosition.TOP);
//EasyLoading.showInfo('connectDevice'.tr);
return;
}
Get.toNamed(option.targetRoute,
arguments: {'translationId': option.translationId});
}
@ -71,6 +84,16 @@ class TranslationMiddlewareController extends GetxController {
// return option.description.tr;
return '';
}
/// 判断选项是否可用(音视频/通话依赖BLE连接)
bool isOptionEnabled(TranslationOption option) {
// 当 translationId 为 audioVideo 或 call 时,需要 BLE 已连接
if (option.translationId == 'audioVideo' ||
option.translationId == 'call') {
return bleManager.isConnected;
}
return true;
}
}
/// 翻译功能选项数据模型

10
lib/modules/translation/middleware/views/translation_middleware_view.dart

@ -86,6 +86,7 @@ class TranslationMiddlewareView
TranslationOption option,
bool isDarkMode,
) {
final isEnabled = controller.isOptionEnabled(option); // 根据 BLE 连接态控制可用性
return GestureDetector(
onTap: () => controller.navigateToTranslationFeature(option),
child: Container(
@ -112,13 +113,15 @@ class TranslationMiddlewareView
width: 60.w,
height: 60.h,
decoration: BoxDecoration(
color: Color(option.iconColor).withOpacity(0.1),
color: Color(option.iconColor)
.withOpacity(isEnabled ? 0.1 : 0.05),
borderRadius: BorderRadius.circular(16.r),
),
child: Icon(
option.icon,
size: 32.sp,
color: Color(option.iconColor),
color: Color(option.iconColor)
.withOpacity(isEnabled ? 1.0 : 0.5),
),
),
SizedBox(height: 16.h),
@ -129,7 +132,8 @@ class TranslationMiddlewareView
style: TextStyle(
fontSize: 16.sp,
fontWeight: FontWeight.bold,
color: isDarkMode ? Colors.white : Colors.black87,
color: (isDarkMode ? Colors.white : Colors.black87)
.withOpacity(isEnabled ? 1.0 : 0.5),
),
textAlign: TextAlign.center,
maxLines: 2,

Loading…
Cancel
Save