BluxNotification.fromMap constructor
유연 파서
data가 String이면 JSON 파싱 시도(실패 시 null)data가 Map이면 그대로
Implementation
factory BluxNotification.fromMap(Map<String, dynamic> map) {
Map<String, dynamic>? parsedData;
final dynamic rawData = map['data'];
if (rawData is String) {
try {
final decodedData = jsonDecode(rawData);
if (decodedData is Map<String, dynamic>) {
parsedData = decodedData;
} else {
debugPrint(
'data decoded but not a Map (rawData = $rawData, decodedData = $decodedData)',
);
parsedData = null;
}
} catch (e, s) {
debugPrint('data decode failed: $e\n$s (rawData = $rawData)');
parsedData = null;
}
} else if (rawData is Map) {
parsedData = Map<String, dynamic>.from(rawData);
} else if (rawData != null) {
debugPrint(
'data of unsupported type: ${rawData.runtimeType} (rawData = $rawData)',
);
parsedData = null;
} else if (rawData == null) {
parsedData = null;
}
return BluxNotification(
id: map['id'] as String,
body: map['body'] as String,
title: map['title'] as String?,
url: map['url'] as String?,
imageUrl: map['imageUrl'] as String?,
data: parsedData,
);
}