EditDouble function
Widget
EditDouble({
- Key? key,
- TextEditingController? controller,
- OptionalValueListener<
double> ? valueListener, - double? initialValue,
- double? minValue,
- double? maxValue,
- bool signed = true,
- bool allowEmpty = true,
- void onSubmitted()?,
- void onChanged()?,
- String? label,
- String? hint,
- Widget? prefixIcon,
- String? helperText,
- String? errorText,
- int? maxLength,
- bool clear = false,
- Widget? suffixIcon,
- FocusNode? focusNode,
- Color? cursorColor,
- TextInputType? keyboardType,
- TextInputAction? textInputAction = TextInputAction.next,
- InputDecoration? decoration,
- InputBorder? border,
Implementation
Widget EditDouble({
Key? key,
TextEditingController? controller,
OptionalValueListener<double>? valueListener,
double? initialValue,
double? minValue,
double? maxValue,
bool signed = true,
bool allowEmpty = true,
void Function(String)? onSubmitted,
void Function(String)? onChanged,
String? label,
String? hint,
Widget? prefixIcon,
String? helperText,
String? errorText,
int? maxLength,
bool clear = false,
Widget? suffixIcon,
FocusNode? focusNode,
Color? cursorColor,
TextInputType? keyboardType,
TextInputAction? textInputAction = TextInputAction.next,
InputDecoration? decoration,
InputBorder? border,
}) {
TextEditingController? c = controller ?? (clear && suffixIcon == null && decoration == null ? TextEditingController() : null);
FocusNode node = focusNode ?? FocusNode();
void onTextChanged(String text) {
valueListener?.onChanged(text.toDouble);
}
return TextFormField(
key: key,
controller: c,
initialValue: (initialValue ?? valueListener?.value)?.toString(),
onChanged: onChanged ?? onTextChanged,
onFieldSubmitted: onSubmitted ?? onTextChanged,
focusNode: node,
maxLength: maxLength,
validator: DoubleValidator(minValue: minValue, maxValue: maxValue, allowEmpty: allowEmpty),
keyboardType: keyboardType ?? TextInputType.numberWithOptions(signed: signed, decimal: true),
textInputAction: textInputAction,
inputFormatters: [signed ? InputFormats.reals : InputFormats.realsUnsigned],
onTapOutside: (e) => node.unfocus(),
cursorColor: cursorColor,
decoration:
decoration ??
InputDecoration(
labelText: label,
hintText: hint,
helperText: helperText,
errorText: errorText,
counterText: "",
border: border,
prefixIcon: prefixIcon,
suffixIcon: suffixIcon ?? (!clear ? null : IconButton(icon: Icon(Icons.clear), onPressed: () => c?.clear())),
),
);
}