saveSnapshot method

void saveSnapshot({
  1. required Image image,
  2. required List<TextLayerData> textLayers,
  3. required double rotationAngle,
  4. required double scale,
})

保存当前状态到历史快照

Implementation

void saveSnapshot({
  required ui.Image image,
  required List<TextLayerData> textLayers,
  required double rotationAngle,
  required double scale,
}) {
  // 深拷贝文本图层列表
  final copiedTextLayers = textLayers.map((layer) {
    return TextLayerData(
      id: layer.id,
      text: layer.text,
      position: layer.position,
      color: layer.color,
      fontSize: layer.fontSize,
      isSelected: layer.isSelected,
    );
  }).toList();

  final snapshot = EditorStateSnapshot(
    image: image, // ui.Image 是不可变的,可以直接引用
    textLayers: copiedTextLayers,
    rotationAngle: rotationAngle,
    scale: scale,
  );

  _snapshots.add(snapshot);

  // 限制历史记录数量,避免内存占用过大
  if (_snapshots.length > maxHistorySize) {
    _snapshots.removeAt(0);
  }
}