import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import '../../../core/utils/logger.dart'; import '../../../routes/app_routes.dart'; import '../views/widgets/row_confirm_widget.dart'; import '../views/widgets/row_equalizer_widget.dart'; import '../views/widgets/row_grade_widget.dart'; import '../views/widgets/row_input_widget.dart'; import '../views/widgets/row_keypress_widget.dart'; import '../views/widgets/row_radio_widget.dart'; import '../views/widgets/row_switch_widget.dart'; import '../views/widgets/row_timer_widget.dart'; class EqSettingsController extends GetxController { final RxList uiList = [ { 'title': '音效', 'templates': [ { 'type': 'equalizer', 'name': '均衡器', 'value': [], 'options': [ { 'label': '默认', 'value': [1, 2, 3, 4, 5, 4, 3, 2, 1, 0], 'default': true, }, { 'label': '流行', 'value': [1, 0, 3, 4, 5, 4, 1, 2, 1, 0], 'default': true, }, { 'label': '摇滚', 'value': [2, 3, 4, 5, 4, 3, 2, 1, 0, -1], 'default': true, }, { 'label': '爵士', 'value': [3, 4, 0, 4, 3, 2, 1, 0, -1, -2], 'default': true, }, { 'label': '经典', 'value': [3, 4, 2, 4, 3, 2, 1, 0, -1, -2], 'default': true, }, { 'label': '乡村', 'value': [3, 4, 1, 4, 3, 2, 1, 0, -1, -2], 'default': true, }, ], 'xAxis': [ '8', '31', '62', '125', '250', '500', '1K', '2K', '4K', '16K' ], 'onCallback': (List value) { Logger.d('equalizer', '均衡器:$value'); }, } ], }, { 'title': '按键功能', 'templates': [ { 'type': 'keypress', 'data': [ {'key': 'key1', 'label': '单击', 'left': 1, 'right': 1}, {'key': 'key2', 'label': '双击', 'left': 1, 'right': 1}, {'key': 'key3', 'label': '三击', 'left': 1, 'right': 1}, {'key': 'key4', 'label': '长按', 'left': 1, 'right': 1}, ], 'options': [ {'label': '无作用', 'value': 0}, {'label': '回拨电话', 'value': 1}, {'label': '语音助手', 'value': 2}, {'label': '上一曲', 'value': 3}, {'label': '下一曲', 'value': 4}, {'label': '音量加', 'value': 5}, {'label': '音量减', 'value': 6}, {'label': '播放暂停', 'value': 7}, {'label': '游戏模式', 'value': 8}, {'label': '降噪设置', 'value': 9}, {'label': 'EQ切换', 'value': 10}, ], 'onCallback': (Map value) { Logger.d('keypress', '按键功能:$value'); }, }, ], }, { 'title': '耳机功能', 'templates': [ { 'type': 'input', 'name': '修改名称', 'value': 'voitrans', 'onCallback': (String value) { Logger.d('input', '修改名称:$value'); }, }, { 'type': 'radio', 'name': '工作模式', 'value': 1, 'options': [ {'label': '游戏模式', 'value': 1}, {'label': '娱乐模式', 'value': 2}, {'label': '睡眠模式', 'value': 3}, ], 'onCallback': (int value) { Logger.d('radio', '工作模式:$value'); }, }, { 'type': 'switch', 'name': '闪灯开关', 'value': false, 'onCallback': (bool value) { Logger.d('switch', '闪灯开关:$value'); }, }, { 'type': 'switch', 'name': '查找设备', 'value': false, 'description': '在设备上播放声音', 'onCallback': (bool value) { Logger.d('switch', '查找设备:$value'); }, }, { 'type': 'grade', 'name': '降噪等级', 'value': 0, 'onCallback': (int value) { Logger.d('grade', '降噪等级:$value'); }, }, { 'type': 'timer', 'name': '定时关机', 'value': 0, 'onCallback': (int value) { Logger.d('timer', '定时关机:$value'); }, }, ], }, { 'templates': [ { 'type': 'confirm', 'name': '升级耳机固件', 'onCallback': () => Get.toNamed(Routes.OTA_UPGRADE), }, { 'type': 'confirm', 'name': '恢复出厂设置', 'tips': '确定要恢复出厂设置吗?', 'onCallback': () { Logger.d('confirm', '恢复出厂设置'); }, }, { 'type': 'confirm', 'name': '清除配对记录', 'tips': '确定要清除配对记录吗?', 'onCallback': () { Logger.d('confirm', '清除配对记录'); }, }, ], } ].obs; final GetStorage _storage = GetStorage(); @override void onInit() { super.onInit(); final List equalizerOptions = _storage.read('equalizer_options') ?? []; if (equalizerOptions.isNotEmpty) { List options = equalizerOptions.map((e) => Map.from(e)).toList(); uiList[0]['templates'][0]['options'].addAll(options); } } Widget getTemplate(Map data) { return switch (data['type']) { 'equalizer' => RowEqualizerWidget(data), 'keypress' => RowKeypressWidget(data), 'input' => RowInputWidget(data), 'radio' => RowRadioWidget(data), 'switch' => RowSwitchWidget(data), 'grade' => RowGradeWidget(data), 'timer' => RowTimerWidget(data), 'confirm' => RowConfirmWidget(data), _ => const SizedBox.shrink(), }; } }