Quellcode durchsuchen

feat: disable apply operation when setting editable = false

Lucas.Xu vor 2 Jahren
Ursprung
Commit
ab0131c19c

+ 5 - 0
frontend/app_flowy/packages/appflowy_editor/lib/src/editor_state.dart

@@ -72,6 +72,8 @@ class EditorState {
   // TODO: only for testing.
   // TODO: only for testing.
   bool disableSealTimer = false;
   bool disableSealTimer = false;
 
 
+  bool editable = true;
+
   Selection? get cursorSelection {
   Selection? get cursorSelection {
     return _cursorSelection;
     return _cursorSelection;
   }
   }
@@ -112,6 +114,9 @@ class EditorState {
   /// should record the transaction in undo/redo stack.
   /// should record the transaction in undo/redo stack.
   apply(Transaction transaction,
   apply(Transaction transaction,
       [ApplyOptions options = const ApplyOptions()]) {
       [ApplyOptions options = const ApplyOptions()]) {
+    if (!editable) {
+      return;
+    }
     // TODO: validate the transation.
     // TODO: validate the transation.
     for (final op in transaction.operations) {
     for (final op in transaction.operations) {
       _applyOperation(op);
       _applyOperation(op);

+ 2 - 0
frontend/app_flowy/packages/appflowy_editor/lib/src/service/editor_service.dart

@@ -72,6 +72,7 @@ class _AppFlowyEditorState extends State<AppFlowyEditor> {
     editorState.selectionMenuItems = widget.selectionMenuItems;
     editorState.selectionMenuItems = widget.selectionMenuItems;
     editorState.editorStyle = widget.editorStyle;
     editorState.editorStyle = widget.editorStyle;
     editorState.service.renderPluginService = _createRenderPlugin();
     editorState.service.renderPluginService = _createRenderPlugin();
+    editorState.editable = widget.editable;
   }
   }
 
 
   @override
   @override
@@ -84,6 +85,7 @@ class _AppFlowyEditorState extends State<AppFlowyEditor> {
     }
     }
 
 
     editorState.editorStyle = widget.editorStyle;
     editorState.editorStyle = widget.editorStyle;
+    editorState.editable = widget.editable;
     services = null;
     services = null;
   }
   }