checkNumberGroupingIsValid method
bool
checkNumberGroupingIsValid(
- PhoneNumber number,
- String candidate,
- PhoneNumberUtil util,
- NumberGroupingChecker checker,
Implementation
bool checkNumberGroupingIsValid(PhoneNumber number, String candidate,
PhoneNumberUtil util, NumberGroupingChecker checker) {
StringBuffer normalizedCandidate =
PhoneNumberUtil.normalizeDigits(candidate, true /* keep non-digits */);
List<String> formattedNumberGroups = _getNationalNumberGroups(util, number);
if (checker(util, number, normalizedCandidate, formattedNumberGroups)) {
return true;
}
// If this didn't pass, see if there are any alternate formats that match, and try them instead.
PhoneMetadata? alternateFormats =
_phoneUtil.getAlternateFormatsMetadata(number.countryCode);
String nationalSignificantNumber =
util.getNationalSignificantNumber(number);
if (alternateFormats != null) {
for (NumberFormat alternateFormat in alternateFormats.numberFormat) {
if (alternateFormat.leadingDigitsPattern.isNotEmpty) {
// There is only one leading digits pattern for alternate formats.
RegExp pattern = RegExp(alternateFormat.leadingDigitsPattern[0]);
if (pattern.firstMatch(nationalSignificantNumber)?.start != 0) {
// Leading digits don't match; try another one.
continue;
}
}
formattedNumberGroups =
_getNationalNumberGroups(util, number, alternateFormat);
if (checker(util, number, normalizedCandidate, formattedNumberGroups)) {
return true;
}
}
}
return false;
}