You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.4KB

  1. import 'package:farm_tpf/utils/const_common.dart';
  2. import 'package:farm_tpf/utils/const_string.dart';
  3. import 'package:farm_tpf/utils/validators.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:flutter/services.dart';
  6. import 'package:intl/intl.dart';
  7. import 'package:pattern_formatter/pattern_formatter.dart';
  8. class WidgetTextFormFieldNumber extends StatelessWidget {
  9. final TextEditingController textController;
  10. final void Function(String) onSaved;
  11. final void Function(String) validator;
  12. final void Function(String) onChanged;
  13. final String hintValue;
  14. WidgetTextFormFieldNumber(
  15. {@required this.textController,
  16. this.onSaved,
  17. @required this.hintValue,
  18. this.validator,
  19. this.onChanged});
  20. @override
  21. Widget build(BuildContext context) {
  22. return TextFormField(
  23. keyboardType: TextInputType.numberWithOptions(decimal: true),
  24. inputFormatters: [
  25. FilteringTextInputFormatter.allow(ConstCommon.regExpDecimal),
  26. ThousandsFormatter(
  27. formatter: NumberFormat("#,###.####", "es"), allowFraction: true),
  28. ],
  29. decoration: InputDecoration(labelText: hintValue),
  30. validator: validator ??
  31. (String value) {
  32. return Validators.validNumberOrEmpty(value, label_invalid_number);
  33. },
  34. controller: textController,
  35. onSaved: onSaved,
  36. onChanged: onChanged,
  37. );
  38. }
  39. }