11import 'package:flutter/material.dart' ;
2- import 'package:flutter/services.dart' ;
32import 'package:stelaris/feature/sound/modal/section/base_section.dart' ;
3+ import 'package:stelaris/util/formatter/min_value_fomatter.dart' ;
44
55class IntegerFieldsSection extends StatefulWidget {
66 final int initialWeight;
77 final int initialAttenuationDistance;
8+ final int minValue;
89 final ValueChanged <int > onWeightChanged;
910 final ValueChanged <int > onAttenuationDistanceChanged;
1011
@@ -13,6 +14,7 @@ class IntegerFieldsSection extends StatefulWidget {
1314 required this .initialAttenuationDistance,
1415 required this .onWeightChanged,
1516 required this .onAttenuationDistanceChanged,
17+ this .minValue = 1 ,
1618 super .key,
1719 });
1820
@@ -53,15 +55,18 @@ class _IntegerFieldsSectionState extends State<IntegerFieldsSection> {
5355 border: OutlineInputBorder (),
5456 ),
5557 inputFormatters: [
56- FilteringTextInputFormatter .digitsOnly,
58+ MinValueFormatter (widget.minValue)
5759 ],
5860 validator: (v) {
5961 if (v == null || v.isEmpty) return 'Enter a weight' ;
6062 final val = int .tryParse (v);
6163 if (val == null ) return 'Enter a valid integer' ;
6264 return null ;
6365 },
64- onChanged: (v) => widget.onWeightChanged (int .tryParse (v) ?? 1 ),
66+ onChanged: (v) {
67+ final parsed = int .tryParse (v);
68+ if (parsed != null ) widget.onWeightChanged (parsed);
69+ },
6570 ),
6671 const SizedBox (height: 12 ),
6772 TextFormField (
@@ -72,16 +77,18 @@ class _IntegerFieldsSectionState extends State<IntegerFieldsSection> {
7277 border: OutlineInputBorder (),
7378 ),
7479 inputFormatters: [
75- FilteringTextInputFormatter .digitsOnly,
80+ MinValueFormatter (widget.minValue)
7681 ],
7782 validator: (v) {
7883 if (v == null || v.isEmpty) return 'Enter a distance' ;
7984 final val = int .tryParse (v);
8085 if (val == null ) return 'Enter a valid integer' ;
8186 return null ;
8287 },
83- onChanged: (v) =>
84- widget.onAttenuationDistanceChanged (int .tryParse (v) ?? 16 ),
88+ onChanged: (v) {
89+ final parsed = int .tryParse (v);
90+ if (parsed != null ) widget.onAttenuationDistanceChanged (parsed);
91+ },
8592 ),
8693 ],
8794 ),
0 commit comments