valueAs<T extends Object?> static method

T valueAs<T extends Object?>(
  1. Object? value, {
  2. bool? allowHex,
  3. StringEncoding? encoding,
  4. bool asBytes = false,
})

Implementation

static T valueAs<T extends Object?>(Object? value,
    {bool? allowHex, StringEncoding? encoding, bool asBytes = false}) {
  assert((allowHex == null && encoding == null) || asBytes,
      "allowHex and encoding must be use with asBytes");
  if (value is T) {
    return value;
  }
  if (value == null) {
    if (_isNull<T>()) return null as T;
  }

  if (value == null) {
    throw JSONHelperException("Failed to parse value as $T");
  }
  if (value is T) return value as T;
  if (_isDynamic<T>()) {
    return value as T;
  } else if (_isDouble<T>()) {
    return valueAsDouble<double>(value) as T;
  } else if (_isString<T>()) {
    return valueAsString<String>(value) as T;
  } else if (_isInt<T>()) {
    return valueAsInt<int>(value) as T;
  } else if (_isBigInt<T>()) {
    return valueAsBigInt<BigInt>(value) as T;
  } else if (_isBool<T>()) {
    return valueAsBool<bool>(value) as T;
  } else if (_isMap<T>()) {
    return valueAsMap<Map<dynamic, dynamic>>(value) as T;
  } else if (_isMapStringDynamic<T>()) {
    return valueAsMap<Map<String, dynamic>>(value) as T;
  } else if (_isMapStringString<T>()) {
    return valueAsMap<Map<String, String>>(value) as T;
  } else if (_isList<T>()) {
    return valueAsList<List>(value) as T;
  } else if (_isListString<T>()) {
    return valueAsList<List<String>>(value) as T;
  } else if (_isListInt<T>()) {
    if (asBytes) {
      return valueAsBytes<List<int>>(value,
          allowHex: allowHex ?? true, encoding: encoding) as T;
    }
    return valueAsList<List<int>>(value) as T;
  } else if (_isListBigInt<T>()) {
    return valueAsList<List<BigInt>>(value) as T;
  } else if (_isListBool<T>()) {
    return valueAsList<List<bool>>(value) as T;
  } else if (_isListDouble<T>()) {
    return valueAsList<List<double>>(value) as T;
  } else if (_isListOfMap<T>()) {
    return valueAsList<List<Map>>(value) as T;
  } else if (_isListOfMapStringDynamic<T>()) {
    return valueAsList<List<Map<String, dynamic>>>(value) as T;
  } else if (_isListOfMapStringString<T>()) {
    return valueAsList<List<Map<String, String>>>(value) as T;
  }

  throw JSONHelperException("Failed to parse object as $T");
}