Selaa lähdekoodia

fix: cursor doesn't blink when opening selection menu (#1622)

* fix: cursor doesn't blink when opening selection menu

* chore: fix dart lint
Lucas.Xu 2 vuotta sitten
vanhempi
commit
5c1b084789

+ 1 - 1
frontend/app_flowy/packages/appflowy_editor/lib/src/render/selection_menu/selection_menu_service.dart

@@ -111,7 +111,7 @@ class SelectionMenu implements SelectionMenuService {
 
     Overlay.of(context)?.insert(_selectionMenuEntry!);
 
-    editorState.service.keyboardService?.disable();
+    editorState.service.keyboardService?.disable(showCursor: true);
     editorState.service.scrollService?.disable();
     selectionService.currentSelection.addListener(_onSelectionChange);
   }

+ 7 - 3
frontend/app_flowy/packages/appflowy_editor/lib/src/service/keyboard_service.dart

@@ -35,7 +35,7 @@ abstract class AppFlowyKeyboardService {
   ///   you can disable the keyboard service of flowy_editor.
   /// But you need to call the `enable` function to restore after exiting
   ///   your custom component, otherwise the keyboard service will fails.
-  void disable();
+  void disable({bool showCursor = false});
 }
 
 /// Process keyboard events
@@ -62,6 +62,7 @@ class _AppFlowyKeyboardState extends State<AppFlowyKeyboard>
   final FocusNode _focusNode = FocusNode(debugLabel: 'flowy_keyboard_service');
 
   bool isFocus = true;
+  bool showCursor = false;
 
   @override
   List<ShortcutEvent> get shortcutEvents => widget.shortcutEvents;
@@ -101,8 +102,9 @@ class _AppFlowyKeyboardState extends State<AppFlowyKeyboard>
   }
 
   @override
-  void disable() {
+  void disable({bool showCursor = false}) {
     isFocus = false;
+    this.showCursor = showCursor;
     _focusNode.unfocus();
   }
 
@@ -137,8 +139,10 @@ class _AppFlowyKeyboardState extends State<AppFlowyKeyboard>
   void _onFocusChange(bool value) {
     Log.keyboard.debug('on keyboard event focus change $value');
     isFocus = value;
-    if (!value) {
+    if (!value && !showCursor) {
       widget.editorState.service.selectionService.clearCursor();
+    } else {
+      showCursor = false;
     }
   }
 

+ 1 - 1
frontend/app_flowy/packages/appflowy_editor_plugins/lib/src/emoji_picker/emoji_menu_item.dart

@@ -5,7 +5,7 @@ import 'package:flutter/services.dart';
 import 'emoji_picker.dart';
 
 SelectionMenuItem emojiMenuItem = SelectionMenuItem(
-  name: () => 'emoji',
+  name: () => 'Emoji',
   icon: (editorState, onSelected) => Icon(
     Icons.emoji_emotions_outlined,
     color: onSelected