From 36e88d033be2a5270c556f2125e1dded88edc213 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Sun, 13 Apr 2025 10:56:19 +0300 Subject: [PATCH] Refactor SliderValueSelector layout for improved readability and maintainability --- .../widgets/slider_value_selector.dart | 94 +++---------------- 1 file changed, 15 insertions(+), 79 deletions(-) diff --git a/lib/pages/routines/widgets/slider_value_selector.dart b/lib/pages/routines/widgets/slider_value_selector.dart index bc35e674..526e6fa0 100644 --- a/lib/pages/routines/widgets/slider_value_selector.dart +++ b/lib/pages/routines/widgets/slider_value_selector.dart @@ -3,8 +3,6 @@ import 'package:flutter/services.dart'; import 'package:syncrow_web/pages/routines/widgets/condition_toggle.dart'; import 'package:syncrow_web/pages/routines/widgets/function_slider.dart'; import 'package:syncrow_web/pages/routines/widgets/value_display.dart'; -import 'package:syncrow_web/utils/color_manager.dart'; -import 'package:syncrow_web/utils/extension/build_context_x.dart'; class SliderValueSelector extends StatelessWidget { final String? currentCondition; @@ -32,88 +30,26 @@ class SliderValueSelector extends StatelessWidget { @override Widget build(BuildContext context) { - if (dialogType == 'IF') { - return Column( - spacing: 16, - mainAxisAlignment: MainAxisAlignment.center, - children: [ + return Column( + spacing: 16, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (dialogType == 'IF') ConditionToggle( currentCondition: currentCondition, onChanged: onConditionChanged, ), - ValueDisplay( - value: initialValue, - label: displayedValue, - unit: unit, - ), - FunctionSlider( - initialValue: initialValue, - range: sliderRange, - onChanged: onSliderChanged, - dividendOfRange: dividendOfRange, - ), - ], - ); - } - - return Row( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisSize: MainAxisSize.min, - children: [ - const Spacer(), - Expanded( - flex: 2, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - TextFormField( - onChanged: (value) => onSliderChanged(double.tryParse(value) ?? 0), - expands: false, - onTapOutside: (_) => FocusScope.of(context).unfocus(), - initialValue: displayedValue, - style: context.textTheme.headlineMedium!.copyWith( - color: ColorsManager.primaryColorWithOpacity, - ), - inputFormatters: [ - RangeInputFormatter(min: sliderRange.$1, max: sliderRange.$2), - ], - decoration: InputDecoration( - border: OutlineInputBorder( - borderSide: BorderSide.none, - borderRadius: BorderRadius.circular(8), - ), - filled: true, - fillColor: ColorsManager.textFieldGreyColor.withOpacity(0.5), - suffixText: unit, - suffixStyle: context.textTheme.headlineMedium!.copyWith( - color: ColorsManager.primaryColorWithOpacity, - ), - ), - ), - const SizedBox(height: 8), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - 'Min: ${sliderRange.$1}', - style: context.textTheme.labelSmall!.copyWith( - color: ColorsManager.lightGrayColor, - ), - ), - const Spacer(), - Text( - 'Max: ${sliderRange.$2}', - style: context.textTheme.labelSmall!.copyWith( - color: ColorsManager.lightGrayColor, - ), - ), - ], - ), - ], - ), + ValueDisplay( + value: initialValue, + label: displayedValue, + unit: unit, + ), + FunctionSlider( + initialValue: initialValue, + range: sliderRange, + onChanged: onSliderChanged, + dividendOfRange: dividendOfRange, ), - const Spacer(), ], ); }