richPlural static method
TextSpan?
richPlural(
- TranslationMetadata<
BaseAppLocale, BaseTranslations> meta, - String path,
- Map<
String, Object> param
Handler for overridden rich plural.
Returns a TextSpan if the path was successfully overridden.
Returns null otherwise.
Implementation
static TextSpan? richPlural(
TranslationMetadata meta, String path, Map<String, Object> param) {
final node = meta.overrides[path];
if (node == null) {
return null;
}
if (node is! PluralNode) {
print('Overridden $path is not a PluralNode but a ${node.runtimeType}.');
return null;
}
if (!node.rich) {
print('Overridden $path must be rich (RichText).');
return null;
}
final PluralResolver resolver;
if (node.pluralType == PluralType.cardinal) {
resolver = meta.cardinalResolver ??
PluralResolvers.cardinal(meta.locale.languageCode);
} else {
resolver = meta.ordinalResolver ??
PluralResolvers.ordinal(meta.locale.languageCode);
}
final quantities = node.quantities.cast<Quantity, RichTextNode>();
return RichPluralResolvers.bridge(
n: param[node.paramName] as num,
resolver: resolver,
zero: quantities[Quantity.zero] != null
? () => quantities[Quantity.zero]!
._buildTextSpan<num>(meta, param, node.paramName)
: null,
one: quantities[Quantity.one] != null
? () => quantities[Quantity.one]!
._buildTextSpan<num>(meta, param, node.paramName)
: null,
two: quantities[Quantity.two] != null
? () => quantities[Quantity.two]!
._buildTextSpan<num>(meta, param, node.paramName)
: null,
few: quantities[Quantity.few] != null
? () => quantities[Quantity.few]!
._buildTextSpan<num>(meta, param, node.paramName)
: null,
many: quantities[Quantity.many] != null
? () => quantities[Quantity.many]!
._buildTextSpan<num>(meta, param, node.paramName)
: null,
other: quantities[Quantity.other] != null
? () => quantities[Quantity.other]!
._buildTextSpan<num>(meta, param, node.paramName)
: null,
);
}