diff --git a/lib/src/widgets/controller.dart b/lib/src/widgets/controller.dart index f9447c0e..db6637a5 100644 --- a/lib/src/widgets/controller.dart +++ b/lib/src/widgets/controller.dart @@ -62,6 +62,10 @@ class QuillController extends ChangeNotifier { bool ignoreFocusOnTextChange = false; + /// Skip requestKeyboard being called in + /// RawEditorState#_didChangeTextEditingValue + bool skipRequestKeyboard = false; + /// True when this [QuillController] instance has been disposed. /// /// A safety mechanism to ensure that listeners don't crash when adding, diff --git a/lib/src/widgets/embeds/default_embed_builder.dart b/lib/src/widgets/embeds/default_embed_builder.dart index 1c5b274e..0eb22b5a 100644 --- a/lib/src/widgets/embeds/default_embed_builder.dart +++ b/lib/src/widgets/embeds/default_embed_builder.dart @@ -84,8 +84,10 @@ Widget defaultEmbedBuilder( controller, controller.selection.start); final attr = replaceStyleString( getImageStyleString(controller), w, h); - controller.formatText( - res.item1, 1, StyleAttribute(attr)); + controller + ..skipRequestKeyboard = true + ..formatText( + res.item1, 1, StyleAttribute(attr)); }, imageWidth: _widthHeight?.item1, imageHeight: _widthHeight?.item2, diff --git a/lib/src/widgets/raw_editor.dart b/lib/src/widgets/raw_editor.dart index e6f917bd..b26f4461 100644 --- a/lib/src/widgets/raw_editor.dart +++ b/lib/src/widgets/raw_editor.dart @@ -708,7 +708,11 @@ class RawEditorState extends EditorState if (kIsWeb) { _onChangeTextEditingValue(ignoreFocus); if (!ignoreFocus) { - requestKeyboard(); + if (controller.skipRequestKeyboard) { + controller.skipRequestKeyboard = false; + } else { + requestKeyboard(); + } } return; } @@ -716,7 +720,11 @@ class RawEditorState extends EditorState if (ignoreFocus || _keyboardVisible) { _onChangeTextEditingValue(ignoreFocus); } else { - requestKeyboard(); + if (controller.skipRequestKeyboard) { + controller.skipRequestKeyboard = false; + } else { + requestKeyboard(); + } if (mounted) { setState(() { // Use widget.controller.value in build()