Refactor SliderValueSelector layout for improved readability and maintainability

This commit is contained in:
Faris Armoush
2025-04-13 10:56:19 +03:00
parent c54fd780b7
commit 36e88d033b

View File

@ -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,11 +30,11 @@ class SliderValueSelector extends StatelessWidget {
@override
Widget build(BuildContext context) {
if (dialogType == 'IF') {
return Column(
spacing: 16,
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (dialogType == 'IF')
ConditionToggle(
currentCondition: currentCondition,
onChanged: onConditionChanged,
@ -55,68 +53,6 @@ class SliderValueSelector extends StatelessWidget {
],
);
}
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,
),
),
],
),
],
),
),
const Spacer(),
],
);
}
}
class RangeInputFormatter extends TextInputFormatter {