diff --git a/lib/modules/eq_settings/controllers/eq_settings_controller.dart b/lib/modules/eq_settings/controllers/eq_settings_controller.dart index 842fa5be0..7709ff5d1 100644 --- a/lib/modules/eq_settings/controllers/eq_settings_controller.dart +++ b/lib/modules/eq_settings/controllers/eq_settings_controller.dart @@ -4,10 +4,12 @@ import 'package:get/get.dart'; import '../../../core/utils/logger.dart'; import '../../../routes/app_routes.dart'; import '../views/widgets/row_confirm_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 = [ @@ -86,6 +88,22 @@ class EqSettingsController extends GetxController { 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'); + }, + }, ], }, { @@ -121,6 +139,8 @@ class EqSettingsController extends GetxController { 'input' => RowInputWidget(data), 'radio' => RowRadioWidget(data), 'switch' => RowSwitchWidget(data), + 'grade' => RowGradeWidget(data), + 'timer' => RowTimerWidget(data), 'confirm' => RowConfirmWidget(data), _ => const SizedBox.shrink(), }; diff --git a/lib/modules/eq_settings/views/widgets/row_grade_widget.dart b/lib/modules/eq_settings/views/widgets/row_grade_widget.dart new file mode 100644 index 000000000..9ac8d9fa4 --- /dev/null +++ b/lib/modules/eq_settings/views/widgets/row_grade_widget.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + +class RowGradeWidget extends StatefulWidget { + final Map templateData; + + const RowGradeWidget(this.templateData, {super.key}); + + @override + State createState() => _RowGradeWidgetState(); +} + +class _RowGradeWidgetState 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, + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/modules/eq_settings/views/widgets/row_keypress_widget.dart b/lib/modules/eq_settings/views/widgets/row_keypress_widget.dart index 0e5f5229a..2e7722017 100644 --- a/lib/modules/eq_settings/views/widgets/row_keypress_widget.dart +++ b/lib/modules/eq_settings/views/widgets/row_keypress_widget.dart @@ -61,11 +61,11 @@ class _RowKeypressWidgetState extends State { } Widget _rowItem(bool isDarkMode, Map item) { - return Padding( - padding: EdgeInsets.symmetric(vertical: 10.w), - child: Row( - children: [ - Expanded( + return Row( + children: [ + Expanded( + child: Padding( + padding: EdgeInsets.symmetric(vertical: 10.w), child: Text( item['label'], textAlign: TextAlign.center, @@ -75,10 +75,13 @@ class _RowKeypressWidgetState extends State { ), ), ), - Expanded( - child: GestureDetector( - onTap: () => _radioDialog(isDarkMode, item, 'left'), - behavior: HitTestBehavior.translucent, + ), + Expanded( + child: GestureDetector( + onTap: () => _radioDialog(isDarkMode, item, 'left'), + behavior: HitTestBehavior.translucent, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 10.w), child: Text( _getLabel(item['left']), textAlign: TextAlign.center, @@ -89,10 +92,13 @@ class _RowKeypressWidgetState extends State { ), ), ), - Expanded( - child: GestureDetector( - onTap: () => _radioDialog(isDarkMode, item, 'right'), - behavior: HitTestBehavior.translucent, + ), + Expanded( + child: GestureDetector( + onTap: () => _radioDialog(isDarkMode, item, 'right'), + behavior: HitTestBehavior.translucent, + child: Padding( + padding: EdgeInsets.symmetric(vertical: 10.w), child: Text( _getLabel(item['right']), textAlign: TextAlign.center, @@ -103,8 +109,8 @@ class _RowKeypressWidgetState extends State { ), ), ), - ], - ), + ), + ], ); } diff --git a/lib/modules/eq_settings/views/widgets/row_timer_widget.dart b/lib/modules/eq_settings/views/widgets/row_timer_widget.dart new file mode 100644 index 000000000..a178662b2 --- /dev/null +++ b/lib/modules/eq_settings/views/widgets/row_timer_widget.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + +class RowTimerWidget extends StatefulWidget { + final Map templateData; + + const RowTimerWidget(this.templateData, {super.key}); + + @override + State createState() => _RowTimerWidgetState(); +} + +class _RowTimerWidgetState extends State { + Map get _templateData => widget.templateData; + + @override + Widget build(BuildContext context) { + final isDarkMode = Theme.of(context).brightness == Brightness.dark; + + return GestureDetector( + onTap: () => _timerBottomSheet(isDarkMode), + behavior: HitTestBehavior.translucent, + child: 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['value'] > 0) + Text( + '${_templateData['value']}分钟', + style: TextStyle( + fontSize: 12.sp, + color: isDarkMode ? Colors.white : Colors.grey, + ), + ), + Icon( + Icons.chevron_right, + size: 26.w, + color: Colors.blue, + ), + ], + ), + ), + ); + } + + void _timerBottomSheet(bool isDarkMode) {} +}