new project stable version
This commit is contained in:
49
lib/presentation/components/utils/card_formatter.dart
Normal file
49
lib/presentation/components/utils/card_formatter.dart
Normal file
@@ -0,0 +1,49 @@
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
class CardNumberFormatter extends TextInputFormatter {
|
||||
@override
|
||||
TextEditingValue formatEditUpdate(
|
||||
TextEditingValue oldValue,
|
||||
TextEditingValue newValue,
|
||||
) {
|
||||
var text = newValue.text.replaceAll(' ', '');
|
||||
var buffer = StringBuffer();
|
||||
for (int i = 0; i < text.length; i++) {
|
||||
buffer.write(text[i]);
|
||||
var nonZeroIndex = i + 1;
|
||||
if (nonZeroIndex % 4 == 0 && nonZeroIndex != text.length) {
|
||||
buffer.write(' '); // Добавляем пробел каждые 4 цифры
|
||||
}
|
||||
}
|
||||
var string = buffer.toString();
|
||||
return newValue.copyWith(
|
||||
text: string,
|
||||
selection: TextSelection.collapsed(offset: string.length),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CardMonthInputFormatter extends TextInputFormatter {
|
||||
@override
|
||||
TextEditingValue formatEditUpdate(
|
||||
TextEditingValue oldValue,
|
||||
TextEditingValue newValue,
|
||||
) {
|
||||
var newText = newValue.text;
|
||||
if (newValue.selection.baseOffset == 0) return newValue;
|
||||
|
||||
var buffer = StringBuffer();
|
||||
for (int i = 0; i < newText.length; i++) {
|
||||
buffer.write(newText[i]);
|
||||
var nonZeroIndex = i + 1;
|
||||
if (nonZeroIndex % 2 == 0 && nonZeroIndex != newText.length) {
|
||||
buffer.write('/'); // Добавляем слэш после 2-й цифры
|
||||
}
|
||||
}
|
||||
var string = buffer.toString();
|
||||
return newValue.copyWith(
|
||||
text: string,
|
||||
selection: TextSelection.collapsed(offset: string.length),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user