Map toMap(dynamic value, {reserveNull = false}) { Map map = {}; if (value == null) return map; if (value is Map) { map = Map.from(value); } if (value is List) { map = Map.from(value.asMap()); } if (!reserveNull) { map.removeWhere((key, value) => value == null); } return map; } /// convert snapshot value to a list List toList(dynamic value, {reserveNull = false}) { List list = []; if (value == null) return list; if (value is List) { list = List.from(value); } if (value is Map) { list = Map.from(value).values.toList(); } if (reserveNull) { return list; } return list.where((element) => element != null).toList(); } /// Convert any data into double or null if it can not be parsed double? asDouble(dynamic source) { if (source == null) { return null; } return double.tryParse(source.toString()); } /// Convert any data into int or null if it can not be parsed int? asInt(dynamic source, {int? radix}) { if (source == null) { return null; } return int.tryParse(source.toString(), radix: radix); } bool asBool(dynamic source) { if (source == null) { return false; } if (source is num) { return source > 0; } if (source is bool) { return source; } return false; }