Skip to content

注释历史管理

CPDFAnnotationHistoryManager 类用于管理当前文档中注释的编辑历史,提供撤销与重做功能,支持对注释的添加、修改、删除等操作进行回退或恢复。

获取注释历史管理器

你可以通过 CPDFReaderWidgetController 获取 CPDFAnnotationHistoryManager 实例:

dart
CPDFReaderWidgetController? _controller;
// Initialize CPDFReaderWidget and obtain the controller in the onCreated callback
CPDFReaderWidget(
  document: documentPath,
  configuration: CPDFConfiguration(),
  onCreated: (controller) {
    setState(() {
      this._controller = controller;
    });
  },
)

CPDFAnnotationHistoryManager historyManager = _controller.annotationHistoryManager;

设置历史状态变更监听器

调用 setOnHistoryChangedListener() 方法设置监听器,以便在注释历史状态变化时(如用户新增或撤销了注释)收到通知:

dart
historyManager.setOnHistoryChangedListener((canUndo, canRedo) {
  print('Can Undo: $canUndo, Can Redo: $canRedo');
  // 根据状态更新撤销/重做按钮的启用状态
});

判断是否可以撤销或重做

使用以下方法判断当前是否存在可撤销或可重做的操作:

dart
bool canUndo = await historyManager.canUndo();
bool canRedo = await historyManager.canRedo();

这些方法返回布尔值,表示是否存在对应的历史记录。

执行撤销和重做操作

若存在可撤销或重做的历史记录,可调用以下方法进行操作:

dart
await historyManager.undo(); // 撤销上一步注释操作
await historyManager.redo(); // 重做上一步被撤销的注释操作