MemoryJson<T>.decode constructor

MemoryJson<T>.decode(
  1. String payloadName, {
  2. required String argJsonString,
  3. Map<String, dynamic>? argDecodedMap,
})

Given a JSON string representing an array of HeapSample, decode to a List of HeapSample.

Implementation

MemoryJson.decode(
  String payloadName, {
  required String argJsonString,
  Map<String, dynamic>? argDecodedMap,
}) {
  final Map<String, dynamic> decodedMap =
      argDecodedMap == null ? jsonDecode(argJsonString) : argDecodedMap;
  Map<String, dynamic> payload = decodedMap[payloadName];

  int payloadVersion = payload[jsonVersionField];
  final payloadDevToolsScreen = payload[jsonDevToolsScreenField];

  if (payloadVersion != version) {
    payload = upgradeToVersion(payload, payloadVersion);
    payloadVersion = version;
  }

  _memoryPayload = payloadDevToolsScreen == devToolsScreenValueMemory;
  _payloadVersion = payloadVersion;

  // Any problem return (data is empty).
  if (!isMatchedVersion || !isMemoryPayload) return;

  final List dynamicList = payload[jsonDataField];
  for (var index = 0; index < dynamicList.length; index++) {
    final sample = fromJson(dynamicList[index] as Map<String, dynamic>);
    data.add(sample);
  }
}