toMap method

Map<String, Object?>? toMap()

Safe conversion to Map<String, Object?>

Implementation

Map<String, Object?>? toMap() {
  final Object? self = this;
  if (self == null) return null;

  if (self is Map<String, Object?>) return self;
  if (self is Map) {
    final Map<String, Object?> result = <String, Object?>{};
    for (final MapEntry<Object?, Object?> entry in self.entries) {
      final Object? key = entry.key;
      final Object? value = entry.value;
      result[key.toString()] = value;
    }
    return result;
  }

  // Try JSON parsing
  if (self is String) {
    try {
      final Object? decoded = SafeParser.safeDecodeJson(self);
      if (decoded is Map) {
        final Map<String, Object?> result = <String, Object?>{};
        for (final MapEntry<Object?, Object?> entry in decoded.entries) {
          result[entry.key.toString()] = entry.value;
        }
        return result;
      }
    } catch (e) {
      // Ignore JSON parsing errors
    }
  }

  return null;
}