From fb92ee6b84e0592364131d28dcd2ad598a9ef6b2 Mon Sep 17 00:00:00 2001 From: tanlongsheng <252620078@qq.com> Date: Tue, 18 Nov 2025 17:06:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=BE=E5=A4=87=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/eq_settings_controller.dart | 11 +++- .../views/widgets/row_switch_widget.dart | 61 +++++++++++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 lib/modules/eq_settings/views/widgets/row_switch_widget.dart diff --git a/lib/modules/eq_settings/controllers/eq_settings_controller.dart b/lib/modules/eq_settings/controllers/eq_settings_controller.dart index 66fef8720..3f08120f4 100644 --- a/lib/modules/eq_settings/controllers/eq_settings_controller.dart +++ b/lib/modules/eq_settings/controllers/eq_settings_controller.dart @@ -6,6 +6,7 @@ import '../../../routes/app_routes.dart'; import '../views/widgets/row_confirm_widget.dart'; import '../views/widgets/row_input_widget.dart'; import '../views/widgets/row_radio_widget.dart'; +import '../views/widgets/row_switch_widget.dart'; class EqSettingsController extends GetxController { final RxList uiList = [ @@ -35,6 +36,7 @@ class EqSettingsController extends GetxController { 'options': [ {'label': '游戏模式', 'value': '1'}, {'label': '娱乐模式', 'value': '2'}, + {'label': '睡眠模式', 'value': '3'}, ], 'onCallback': (String value) { Logger.d('radio', '工作模式:$value'); @@ -44,14 +46,18 @@ class EqSettingsController extends GetxController { 'type': 'switch', 'name': '闪灯开关', 'value': false, - 'onCallback': () {}, + 'onCallback': (bool value) { + Logger.d('switch', '闪灯开关:$value'); + }, }, { 'type': 'switch', 'name': '查找设备', 'value': false, 'description': '在设备上播放声音', - 'onCallback': () {}, + 'onCallback': (bool value) { + Logger.d('switch', '查找设备:$value'); + }, }, ], }, @@ -86,6 +92,7 @@ class EqSettingsController extends GetxController { return switch (data['type']) { 'input' => RowInputWidget(data), 'radio' => RowRadioWidget(data), + 'switch' => RowSwitchWidget(data), 'confirm' => RowConfirmWidget(data), _ => const SizedBox.shrink(), }; diff --git a/lib/modules/eq_settings/views/widgets/row_switch_widget.dart b/lib/modules/eq_settings/views/widgets/row_switch_widget.dart new file mode 100644 index 000000000..e21223ba5 --- /dev/null +++ b/lib/modules/eq_settings/views/widgets/row_switch_widget.dart @@ -0,0 +1,61 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + +class RowSwitchWidget extends StatefulWidget { + final Map templateData; + + const RowSwitchWidget(this.templateData, {super.key}); + + @override + State createState() => _RowSwitchWidgetState(); +} + +class _RowSwitchWidgetState extends State { + Map get _templateData => widget.templateData; + + @override + Widget build(BuildContext context) { + final isDarkMode = Theme.of(context).brightness == Brightness.dark; + + return Padding( + padding: EdgeInsets.fromLTRB(10.w, 10.w, 0, 10.w), + child: Row( + children: [ + Expanded( + child: Text( + _templateData['name'], + style: TextStyle( + fontSize: 14.sp, + color: isDarkMode ? Colors.white : Colors.black, + ), + ), + ), + if (_templateData['description'] != null) + Text( + _templateData['description'], + style: TextStyle( + fontSize: 12.sp, + color: isDarkMode ? Colors.white : Colors.grey, + ), + ), + SizedBox( + height: 26.w, + child: Transform.scale( + scale: 0.8, + alignment: Alignment.centerRight, + child: Switch( + value: _templateData['value'], + onChanged: (bool value) { + setState(() { + _templateData['value'] = value; + }); + _templateData['onCallback'](value); + }, + ), + ), + ), + ], + ), + ); + } +}