decodeTimeZone static method

HWTimeZone? decodeTimeZone(
  1. DartObject? obj, {
  2. String? defaultLocale,
  3. String? resourcePrefix,
})

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');
}