findOrNull<T extends Object?> method

T? findOrNull<T extends Object?>({
  1. Object? key,
  2. T? defaultValue,
})

Implementation

T? findOrNull<T extends Object?>({Object? key, T? defaultValue}) {
  final root = this;
  final value = root is Map && key != null ? root[key] : root;
  if (value is T) return value;
  if (value is num) {
    if (T == int) return value.toInt() as T;
    if (T == double) return value.toDouble() as T;
    if (T == String) return value.toString() as T;
  }
  if (value is String) {
    if (T == num || T == int || T == double) {
      final number = num.tryParse(value);
      if (number != null) {
        if (T == int) return number.toInt() as T;
        if (T == double) return number.toDouble() as T;
        return number as T;
      }
    }
    if (T == bool) {
      final boolean = bool.tryParse(value);
      if (boolean != null) return boolean as T;
    }
  }
  return defaultValue;
}