EditDouble function

Widget EditDouble({
  1. Key? key,
  2. TextEditingController? controller,
  3. OptionalValueListener<double>? valueListener,
  4. double? initialValue,
  5. double? minValue,
  6. double? maxValue,
  7. bool signed = true,
  8. bool allowEmpty = true,
  9. void onSubmitted(
    1. String
    )?,
  10. void onChanged(
    1. String
    )?,
  11. String? label,
  12. String? hint,
  13. Widget? prefixIcon,
  14. String? helperText,
  15. String? errorText,
  16. int? maxLength,
  17. bool clear = false,
  18. Widget? suffixIcon,
  19. FocusNode? focusNode,
  20. Color? cursorColor,
  21. TextInputType? keyboardType,
  22. TextInputAction? textInputAction = TextInputAction.next,
  23. InputDecoration? decoration,
  24. 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?.toString() ?? 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())),
        ),
  );
}