decodeTimeZone static method
Decodes an HWTimeZone, or null when obj is absent.
Implementation
static HWTimeZone? decodeTimeZone(
DartObject? obj, {
String? defaultLocale,
String? resourcePrefix,
}) {
if (obj == null || obj.isNull) return null;
final typeName = obj.type?.element?.name;
switch (typeName) {
case 'HWLocalTimeZone':
return HWTimeZone.local;
case 'HWNamedTimeZone':
return HWTimeZone.named(getField(obj, 'id')?.toStringValue() ?? '');
case 'HWDataTimeZone':
final data = decodeDataType(
getField(obj, 'data'),
defaultLocale: defaultLocale,
resourcePrefix: resourcePrefix,
);
if (data == null) {
// coverage:ignore-start
throw GeneratorError('HWTimeZone.data has no data');
// coverage:ignore-end
}
return HWDataTimeZone(data);
}
throw GeneratorError('Unknown time zone type: $typeName');
}