From 1b0ec9676ca35d0a243a26a3f206158a94a04519 Mon Sep 17 00:00:00 2001 From: tanlongsheng <252620078@qq.com> Date: Wed, 19 Nov 2025 20:14:03 +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 | 26 +++++--- .../widgets/select_equalizer_widget.dart | 62 ++++++++++++++++++- 2 files changed, 79 insertions(+), 9 deletions(-) diff --git a/lib/modules/eq_settings/controllers/eq_settings_controller.dart b/lib/modules/eq_settings/controllers/eq_settings_controller.dart index 003a0c23b..7b4341ae4 100644 --- a/lib/modules/eq_settings/controllers/eq_settings_controller.dart +++ b/lib/modules/eq_settings/controllers/eq_settings_controller.dart @@ -20,39 +20,51 @@ class EqSettingsController extends GetxController { { 'type': 'equalizer', 'name': '均衡器', - 'value': [], + 'value': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'options': [ { 'label': '默认', - 'value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + 'value': [1, 2, 3, 4, 5, 4, 3, 2, 1, 0], 'default': true, }, { 'label': '流行', - 'value': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], + 'value': [1, 0, 3, 4, 5, 4, 1, 2, 1, 0], 'default': true, }, { 'label': '摇滚', - 'value': [21, 22, 23, 24, 25, 26, 27, 28, 29, 30], + 'value': [2, 3, 4, 5, 4, 3, 2, 1, 0, -1], 'default': true, }, { 'label': '爵士', - 'value': [31, 32, 33, 34, 35, 36, 37, 38, 39, 40], + 'value': [3, 4, 0, 4, 3, 2, 1, 0, -1, -2], 'default': true, }, { 'label': '经典', - 'value': [31, 32, 33, 34, 35, 36, 37, 38, 39, 40], + 'value': [3, 4, 2, 4, 3, 2, 1, 0, -1, -2], 'default': true, }, { 'label': '乡村', - 'value': [31, 32, 33, 34, 35, 36, 37, 38, 39, 40], + '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'); }, diff --git a/lib/modules/eq_settings/views/widgets/select_equalizer_widget.dart b/lib/modules/eq_settings/views/widgets/select_equalizer_widget.dart index 3ff4abeaf..12e96a718 100644 --- a/lib/modules/eq_settings/views/widgets/select_equalizer_widget.dart +++ b/lib/modules/eq_settings/views/widgets/select_equalizer_widget.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -14,6 +15,14 @@ class SelectEqualizerWidget extends StatefulWidget { class _SelectEqualizerWidgetState extends State { Map get _templateData => widget.templateData; + List _values = []; + + @override + void initState() { + super.initState(); + _values = List.from(_templateData['value']); + } + @override Widget build(BuildContext context) { final isDarkMode = Theme.of(context).brightness == Brightness.dark; @@ -56,6 +65,7 @@ class _SelectEqualizerWidgetState extends State { return ListView( padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 10.w), children: [ + _equalizer(isDarkMode), Wrap( spacing: 10.w, runSpacing: 10.w, @@ -67,6 +77,54 @@ class _SelectEqualizerWidgetState extends State { ); } + Widget _equalizer(bool isDarkMode) { + return Container( + height: 220.w, + margin: EdgeInsets.only(bottom: 5.w), + child: Row( + children: List.generate( + _templateData['xAxis'].length, + (index) => Expanded( + child: Column( + children: [ + Expanded( + child: RotatedBox( + quarterTurns: 3, + child: StatefulBuilder( + builder: (BuildContext context, setStateful) { + return Slider( + value: _values[index].toDouble(), + min: -5, + max: 5, + divisions: 10, + activeColor: Colors.green, + onChanged: (value) { + setStateful(() { + _values[index] = value.toInt(); + }); + }, + onChangeEnd: (value) { + setState(() {}); + }, + ); + }, + ), + ), + ), + Text( + _templateData['xAxis'][index], + style: TextStyle( + fontSize: 14.sp, + color: isDarkMode ? Colors.white : Colors.grey), + ), + ], + ), + ), + ), + ), + ); + } + Widget _item(bool isDarkMode, Map option) { return GestureDetector( onTap: () { @@ -80,7 +138,7 @@ class _SelectEqualizerWidgetState extends State { height: 110.w, alignment: Alignment.center, decoration: BoxDecoration( - color: _templateData['value'] == option['value'] + color: listEquals(_values, option['value']) ? Colors.green : isDarkMode ? Colors.white.withValues(alpha: 0.05) @@ -101,7 +159,7 @@ class _SelectEqualizerWidgetState extends State { style: TextStyle( fontSize: 16.sp, fontWeight: FontWeight.w600, - color: _templateData['value'] == option['value'] + color: listEquals(_values, option['value']) ? Colors.white : isDarkMode ? Colors.white