saveSnapshot method
void
saveSnapshot({
- required Image image,
- required List<
TextLayerData> textLayers, - required double rotationAngle,
- 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);
}
}