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 ?? 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())),
        ),
  );
}