From 25980c85a1f16ed4a3ceb4e0fb4312b4616109ee Mon Sep 17 00:00:00 2001 From: "mr.mojtaba" Date: Sat, 22 Nov 2025 14:12:37 +0330 Subject: [PATCH] feat: add step 5 page and update active stepper logic in poultry farm inspection doc: some utils in core --- .../separator_input_formatter.dart | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 packages/core/lib/utils/text_input_formatter/separator_input_formatter.dart diff --git a/packages/core/lib/utils/text_input_formatter/separator_input_formatter.dart b/packages/core/lib/utils/text_input_formatter/separator_input_formatter.dart new file mode 100644 index 0000000..6a86cc3 --- /dev/null +++ b/packages/core/lib/utils/text_input_formatter/separator_input_formatter.dart @@ -0,0 +1,33 @@ +import 'package:flutter/services.dart'; +import 'package:intl/intl.dart'; + + +/// A text input formatter that formats numbers with a separator. +/// Example: +/// ```dart +/// SeparatorInputFormatter() +/// ``` +class SeparatorInputFormatter extends TextInputFormatter { + final NumberFormat _formatter; + + SeparatorInputFormatter() : _formatter = NumberFormat('#,###'); + + @override + TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) { + if (newValue.text.isEmpty) { + return newValue; + } + String tmpText = newValue.text; + String cleanedText = tmpText.replaceAll(RegExp(r'\D'), ''); + int? number = int.tryParse(cleanedText); + if (number == null) { + return oldValue; + } + String formattedText = _formatter.format(number); + int selectionIndex = formattedText.length; + return TextEditingValue( + text: formattedText, + selection: TextSelection.collapsed(offset: selectionIndex), + ); + } +}