processName method
Attempts to extract the cardholder name from the given text.
Returns the extracted cardholder name, or null if no name is found.
Implementation
String? processName(String text) {
if (!checkCreditCardName) {
return null;
}
if (text.contains(RegExp(r'[a-zA-Z\.]'))) {
final hasSpace = text.contains(' ');
final hasNumber = text.contains(RegExp(r'[0-9]'));
if (hasSpace) {
final lines = text.split('\n');
final validLines =
lines.where((line) => line.trim().isNotEmpty && line.contains(' '));
if (validLines.isNotEmpty) {
if (hasNumber) {
cardName = validLines.firstWhere(
(line) => !line.contains(RegExp(r'[0-9]')),
orElse: () => '',
);
} else {
cardName = validLines.first;
}
}
}
}
return cardName.isEmpty ? null : cardName;
}