updateMask method
String?
updateMask({
- required String value,
- required TextEditingController controller,
- required RegExp regexFilter,
- TextInputType? textInputType,
Implementation
String? updateMask({required String value, required TextEditingController controller, required RegExp regexFilter, TextInputType? textInputType}) {
// Extrair apenas nĂºmeros e letras do value
final valueClean = _cleanValue(value);
final nextMask = _formaters.firstWhereOrNull((mask) {
final maskHashtags = _cleanMask(mask.maskImmutable);
return maskHashtags.length > _cleanMask(_currentMask.maskImmutable).length;
});
final previousMask = _formaters.firstWhereOrNull((mask) {
final maskHashtags = _cleanMask(mask.maskImmutable);
return _cleanMask(_currentMask.maskImmutable).length > maskHashtags.length;
});
if (nextMask != null) {
if (valueClean.length > _cleanMask(_currentMask.maskImmutable).length) {
_currentMask = nextMask;
final newValue = mask!.updateMask(
mask: nextMask.mask,
filter: {"#": textInputType != null && textInputType == TextInputType.number ? RegExp(r'[0-9]') : regexFilter},
);
Future.microtask(() => controller.value = newValue);
return newValue.text;
}
}
if (previousMask != null) {
final previousMaskHashtags = _cleanMask(previousMask.maskImmutable);
if (valueClean.length == previousMaskHashtags.length) {
_currentMask = previousMask;
final newValue = mask!.updateMask(
mask: previousMask.mask,
filter: {"#": textInputType != null && textInputType == TextInputType.number ? RegExp(r'[0-9]') : regexFilter},
);
Future.microtask(() => controller.value = newValue);
return newValue.text;
}
}
return null;
}