Przeglądaj źródła

fix: could not copy and paste the plain text

Lucas.Xu 2 lat temu
rodzic
commit
d90414a8c1

+ 13 - 8
frontend/app_flowy/packages/appflowy_editor/lib/src/service/internal_key_event_handlers/copy_paste_handler.dart

@@ -39,7 +39,10 @@ void _handleCopy(EditorState editorState) async {
               endOffset: selection.end.offset)
           .toHTMLString();
       Log.keyboard.debug('copy html: $htmlString');
-      RichClipboard.setData(RichClipboardData(html: htmlString));
+      RichClipboard.setData(RichClipboardData(
+        html: htmlString,
+        text: textNode.toPlainText(),
+      ));
     } else {
       Log.keyboard.debug('unimplemented: copy non-text');
     }
@@ -55,13 +58,15 @@ void _handleCopy(EditorState editorState) async {
     endNode: endNode,
   ).toList();
 
-  final copyString = NodesToHTMLConverter(
-          nodes: nodes,
-          startOffset: selection.start.offset,
-          endOffset: selection.end.offset)
-      .toHTMLString();
-  Log.keyboard.debug('copy html: $copyString');
-  RichClipboard.setData(RichClipboardData(html: copyString));
+  final html = NodesToHTMLConverter(
+    nodes: nodes,
+    startOffset: selection.start.offset,
+    endOffset: selection.end.offset,
+  ).toHTMLString();
+  final text = nodes
+      .map((node) => node is TextNode ? node.toPlainText() : '\n')
+      .join('\n');
+  RichClipboard.setData(RichClipboardData(html: html, text: text));
 }
 
 void _pasteHTML(EditorState editorState, String html) {