tryParse static method

RealtimeMessage? tryParse(
  1. dynamic raw
)

Attempts to parse raw (a JSON string, UTF-8 byte list, or Map) into a RealtimeMessage.

Returns null if parsing fails, malformed JSON is encountered, or an exception is thrown.

final message = RealtimeMessage.tryParse(incomingData);

Implementation

static RealtimeMessage? tryParse(dynamic raw) {
  try {
    if (raw is String) {
      final decoded = jsonDecode(raw);
      if (decoded is Map<String, dynamic>) return RealtimeMessage.fromJson(decoded);
      if (decoded is Map) return RealtimeMessage.fromJson(Map<String, dynamic>.from(decoded));
    } else if (raw is List<int>) {
      final decoded = jsonDecode(utf8.decode(raw));
      if (decoded is Map<String, dynamic>) return RealtimeMessage.fromJson(decoded);
      if (decoded is Map) return RealtimeMessage.fromJson(Map<String, dynamic>.from(decoded));
    } else if (raw is Map<String, dynamic>) {
      return RealtimeMessage.fromJson(raw);
    } else if (raw is Map) {
      return RealtimeMessage.fromJson(Map<String, dynamic>.from(raw));
    }
  } catch (_) {
    // Invalid JSON or format
  }
  return null;
}