getValue<T> method

T getValue<T>(
  1. String key, {
  2. required T def,
  3. OnGetValueErrorCallback? onError,
})

Get Type Value

Supported -> String,int,double,bool,List<T>,List<Map<[String|dynamic],dynamic>>

Implementation

T getValue<T>(
  String key, {
  required T def,
  OnGetValueErrorCallback? onError,
}) {
  final value = _data[key];
  // print(
  //   'type: $T - defType: ${def.runtimeType} - value: ${value.runtimeType}',
  // );
  try {
    if (T == int) {
      return (int.tryParse(value) ?? def) as T;
    }
    if (T == bool) {
      return (bool.tryParse(value) ?? def) as T;
    }
    if (T == double) {
      return (double.tryParse(value) ?? def) as T;
    }
    if (T == String) {
      final val = value ?? def;
      return val.toString() as T;
    }

    // map
    if (T == Map<dynamic, dynamic>) {
      return Map<dynamic, dynamic>.from(value as Map<dynamic, dynamic>) as T;
    }
    if (T == Map<String, dynamic>) {
      return Map<String, dynamic>.from(value as Map<String, dynamic>) as T;
    }

    if (value is List) {
      if (T == List<String>) {
        return List<String>.from(value) as T;
      }
      if (T == List<int>) {
        return List<int>.from(value) as T;
      }
      if (T == List<Map<String, dynamic>>) {
        return List<Map<String, dynamic>>.from(value) as T;
      }
      if (T == List<Map<dynamic, dynamic>>) {
        return List<Map<dynamic, dynamic>>.from(value) as T;
      }
    }
  } catch (e) {
    // print('error: $e');
    onError?.call(e.toString());
    return def;
  }
  return def;
}