asTOrNull<T> function

T? asTOrNull<T>(
  1. Map<String, dynamic>? json,
  2. String key
)

Convert any map value with key to T or null safely.

Implementation

T? asTOrNull<T>(
  Map<String, dynamic>? json,
  String key,
) {
  if (json == null || !json.containsKey(key)) {
    if (0 is T) return 0 as T;
    if (0.0 is T) return 0.0 as T;
    if ('' is T) return '' as T;
    if (false is T) return false as T;
    if ([] is T) return [] as T;
    if (<String, dynamic>{} is T) return <String, dynamic>{} as T;
    return '' as T;
  }
  dynamic value = json[key];
  if (value is T) return value;

  if (0 is T) {
    return toIntOrNull(value) as T;
  } else if (0.0 is T) {
    return toDoubleOrNull(value) as T;
  } else if ('' is T) {
    return toStringOrNull(
      value,
    ) as T;
  } else if (false is T) {
    return toBoolOrNull(
      value,
    ) as T;
  } else if ([] is T) {
    return toListOrNull(
      value,
    ) as T;
  } else if (<String, dynamic>{} is T) {
    return toMapOrNull(
      value,
    ) as T;
  }
  return null;
}