BarcodeCountSession.fromJSON constructor
BarcodeCountSession.fromJSON(
- Map<String, dynamic> event
)
Implementation
factory BarcodeCountSession.fromJSON(Map<String, dynamic> event) {
final json = jsonDecode(event['session']);
final frameSequenceId = json['frameSequenceId'] as int;
final recognizedBarcodesJson = json['recognizedBarcodes'] as List<dynamic>;
final recognizedClustersJson = (json['recognizedClusters'] ?? []) as List<dynamic>;
final hasClusters = recognizedClustersJson.isNotEmpty;
// Only build the barcode map if clusters are present
final List<Barcode> trackedCodes;
final List<Cluster> recognizedClusters;
if (hasClusters) {
final Map<String, Barcode> barcodeMap = {};
trackedCodes = [];
for (final barcodeJson in recognizedBarcodesJson) {
final barcode = Barcode.fromJSON(barcodeJson as Map<String, dynamic>);
final identifier = barcodeJson['identifier'] as String;
barcodeMap[identifier] = barcode;
trackedCodes.add(barcode);
}
recognizedClusters = recognizedClustersJson.cast<Map<String, dynamic>>().map((e) {
e['_barcodeMap'] = barcodeMap;
return Cluster.fromJSON(e);
}).toList();
} else {
trackedCodes = recognizedBarcodesJson.map((e) => Barcode.fromJSON(e as Map<String, dynamic>)).toList();
recognizedClusters = [];
}
final additionalBarcodes = (json['additionalBarcodes'] as List<dynamic>)
.cast<Map<String, dynamic>>()
.map((e) => Barcode.fromJSON(e))
.toList()
.cast<Barcode>();
final frameId = event['frameId'] as String;
final viewId = event['viewId'] as int;
return BarcodeCountSession._(
trackedCodes, additionalBarcodes, recognizedClusters, frameSequenceId, frameId, viewId);
}