ImportStateHistory.fromMap constructor

ImportStateHistory.fromMap(
  1. Map map, {
  2. ImportEditorConfigs configs = const ImportEditorConfigs(),
})

Creates an ImportStateHistory instance from a map representation.

Implementation

factory ImportStateHistory.fromMap(
  Map map, {
  ImportEditorConfigs configs = const ImportEditorConfigs(),
}) {
  List<EditorStateHistory> stateHistory = [];
  List<Uint8List> stickers = [];

  String version = map['version'] ?? ExportImportVersion.version_1_0_0;

  for (var sticker in List.from(map['stickers'] ?? [])) {
    stickers.add(Uint8List.fromList(List.from(sticker)));
  }

  for (var el in List.from(map['history'] ?? [])) {
    double blur = 0;
    List<Layer> layers = [];

    if (el['blur'] != null) {
      blur = double.tryParse((el['blur'] ?? '0').toString()) ?? 0;
    }
    for (var layer in List.from(el['layers'] ?? [])) {
      layers.add(Layer.fromMap(layer, stickers));
    }

    List<List<double>> filters = [];
    if (version == ExportImportVersion.version_1_0_0) {
      for (var el in List.from(el['filters'] ?? [])) {
        List<List<double>> filterMatrix = List.from(el['filters'] ?? []);
        double opacity =
            double.tryParse((el['opacity'] ?? '1').toString()) ?? 1;
        if (opacity != 1) {
          filterMatrix.add(ColorFilterAddons.opacity(opacity));
        }

        filters.addAll(filterMatrix);
      }
    } else {
      List<List<double>> filterList = [];
      for (var el in List.from(el['filters'] ?? [])) {
        List<double> filtersRaw = [];

        for (var raw in List.from(el)) {
          filtersRaw.add(raw);
        }

        filterList.add(filtersRaw);
      }

      filters = filterList;
    }

    stateHistory.add(
      EditorStateHistory(
        blur: blur,
        layers: layers,
        filters: filters,
        transformConfigs:
            el['transform'] != null && Map.from(el['transform']).isNotEmpty
                ? TransformConfigs.fromMap(el['transform'])
                : TransformConfigs.empty(),
      ),
    );
  }
  return ImportStateHistory._(
    editorPosition: map['position'],
    imgSize:
        Size(map['imgSize']?['width'] ?? 0, map['imgSize']?['height'] ?? 0),
    stateHistory: stateHistory,
    configs: configs,
    version: version,
  );
}