feat: delete slash when using the popuplist and pressing enter key

This commit is contained in:
Lucas.Xu 2022-08-08 18:24:11 +08:00
parent 1ece5cfd9e
commit 6e71ec23a1
2 changed files with 18 additions and 1 deletions

View File

@ -35,7 +35,7 @@ class FlowyRichText extends StatefulWidget {
this.cursorHeight,
this.cursorWidth = 2.0,
this.textSpanDecorator,
this.placeholderText = ' ',
this.placeholderText = 'Type \'/\' for commands',
this.placeholderTextSpanDecorator,
required this.textNode,
required this.editorState,

View File

@ -211,6 +211,7 @@ class _PopupListWidgetState extends State<PopupListWidget> {
if (event.logicalKey == LogicalKeyboardKey.enter) {
if (0 <= selectedIndex && selectedIndex < widget.items.length) {
_deleteSlash();
widget.items[selectedIndex].handler(widget.editorState);
return KeyEventResult.handled;
}
@ -239,6 +240,22 @@ class _PopupListWidgetState extends State<PopupListWidget> {
}
return KeyEventResult.ignored;
}
void _deleteSlash() {
final selection =
widget.editorState.service.selectionService.currentSelection.value;
final nodes =
widget.editorState.service.selectionService.currentSelectedNodes;
if (selection != null && nodes.length == 1) {
TransactionBuilder(widget.editorState)
..deleteText(
nodes.first as TextNode,
selection.start.offset - 1,
1,
)
..commit();
}
}
}
class _PopupListItemWidget extends StatelessWidget {