Explorar o código

fix: undo redo handler

Vincent Chan %!s(int64=2) %!d(string=hai) anos
pai
achega
7c58654fe8

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

@@ -17,6 +17,7 @@ import 'package:flowy_editor/service/internal_key_event_handlers/enter_without_s
 import 'package:flowy_editor/service/internal_key_event_handlers/slash_handler.dart';
 import 'package:flowy_editor/service/internal_key_event_handlers/update_text_style_by_command_x_handler.dart';
 import 'package:flowy_editor/service/internal_key_event_handlers/whitespace_handler.dart';
+import 'package:flowy_editor/service/internal_key_event_handlers/redo_undo_handler.dart';
 import 'package:flowy_editor/service/keyboard_service.dart';
 import 'package:flowy_editor/service/render_plugin_service.dart';
 import 'package:flowy_editor/service/scroll_service.dart';
@@ -39,6 +40,7 @@ List<FlowyKeyEventHandler> defaultKeyEventHandler = [
   flowyDeleteNodesHandler,
   arrowKeysHandler,
   copyPasteKeysHandler,
+  redoUndoKeysHandler,
   enterWithoutShiftInTextNodesHandler,
   updateTextStyleByCommandXHandler,
   whiteSpaceHandler,

+ 15 - 0
frontend/app_flowy/packages/flowy_editor/lib/service/internal_key_event_handlers/redo_undo_handler.dart

@@ -0,0 +1,15 @@
+import 'package:flowy_editor/service/keyboard_service.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+
+FlowyKeyEventHandler redoUndoKeysHandler = (editorState, event) {
+  if (event.isMetaPressed && event.logicalKey == LogicalKeyboardKey.keyZ) {
+    if (event.isShiftPressed) {
+      editorState.undoManager.redo();
+    } else {
+      editorState.undoManager.undo();
+    }
+    return KeyEventResult.handled;
+  }
+  return KeyEventResult.ignored;
+};