validateAddress function
String?
validateAddress({
- required String address,
- String? title = "Address",
- bool trimWhitespace = true,
- bool isRequired = true,
- int minLength = 10,
- int maxLength = 200,
- bool requireStreetNumber = false,
- bool requireStreetName = true,
- bool requireCity = false,
- bool requireCountry = false,
- bool allowSpecialChars = true,
- bool allowNumbers = true,
- bool allowLetters = true,
- List<
String> ? forbiddenWords, - List<
String> ? requiredWords, - List<
String> ? existingAddresses, - String? emptyMessage,
- String? minLengthMessage,
- String? maxLengthMessage,
- String? missingStreetNumberMessage,
- String? missingStreetNameMessage,
- String? missingCityMessage,
- String? missingCountryMessage,
- String? invalidSpecialCharsMessage,
- String? invalidNumbersMessage,
- String? invalidLettersMessage,
- String? forbiddenWordsMessage,
- String? requiredWordsMessage,
- String? alreadyExistsMessage,
- SahihLanguage? lang,
Validates address with component requirements and content filtering. Returns null if valid, error message if invalid.
Implementation
String? validateAddress({
required String address,
String? title = "Address",
bool trimWhitespace = true,
bool isRequired = true,
int minLength = 10,
int maxLength = 200,
bool requireStreetNumber = false,
bool requireStreetName = true,
bool requireCity = false,
bool requireCountry = false,
bool allowSpecialChars = true,
bool allowNumbers = true,
bool allowLetters = true,
List<String>? forbiddenWords,
List<String>? requiredWords,
List<String>? existingAddresses,
String? emptyMessage,
String? minLengthMessage,
String? maxLengthMessage,
String? missingStreetNumberMessage,
String? missingStreetNameMessage,
String? missingCityMessage,
String? missingCountryMessage,
String? invalidSpecialCharsMessage,
String? invalidNumbersMessage,
String? invalidLettersMessage,
String? forbiddenWordsMessage,
String? requiredWordsMessage,
String? alreadyExistsMessage,
SahihLanguage? lang,
}) {
String value = trimWhitespace ? address.trim() : address;
if (isRequired && value.isEmpty) {
return emptyMessage ?? SahihLocalization.get('address_empty', lang: lang);
}
if (!isRequired && value.isEmpty) return null;
if (value.length < minLength) {
return minLengthMessage ??
SahihLocalization.get('address_min_length',
lang: lang, args: {'min': minLength.toString()});
}
if (value.length > maxLength) {
return maxLengthMessage ??
SahihLocalization.get('address_max_length',
lang: lang, args: {'max': maxLength.toString()});
}
if (!allowNumbers && value.containsNumbers) {
return invalidNumbersMessage ??
SahihLocalization.get('address_invalid_numbers', lang: lang);
}
if (!allowLetters && value.containsLetters) {
return invalidLettersMessage ??
SahihLocalization.get('address_invalid_letters', lang: lang);
}
if (!allowSpecialChars && value.containsSpecialChars) {
return invalidSpecialCharsMessage ??
SahihLocalization.get('address_invalid_special', lang: lang);
}
if (requireStreetNumber && !value.hasStreetNumber) {
return missingStreetNumberMessage ??
SahihLocalization.get('address_no_street_number', lang: lang);
}
if (requireStreetName && !value.hasStreetName) {
return missingStreetNameMessage ??
SahihLocalization.get('address_no_street_name', lang: lang);
}
if (requireCity && !value.hasCity) {
return missingCityMessage ??
SahihLocalization.get('address_no_city', lang: lang);
}
if (requireCountry && !value.hasCountry) {
return missingCountryMessage ??
SahihLocalization.get('address_no_country', lang: lang);
}
if (value.containsForbiddenWord(forbiddenWords)) {
return forbiddenWordsMessage ??
SahihLocalization.get('address_forbidden_words', lang: lang);
}
if (!value.containsRequiredWords(requiredWords)) {
return requiredWordsMessage ??
SahihLocalization.get('address_required_words', lang: lang);
}
if (value.isDuplicate(existingAddresses)) {
return alreadyExistsMessage ??
SahihLocalization.get('address_already_exists', lang: lang);
}
return null;
}