Skip to content

Commit 755d7ed

Browse files
committed
[3.7.2] Reverted Embed toPlainText change
1 parent 7437c92 commit 755d7ed

File tree

4 files changed

+28
-7
lines changed

4 files changed

+28
-7
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# [3.7.2]
2+
* Reverted Embed toPlainText change.
3+
14
# [3.7.1]
25
* Change Embed toPlainText to be empty string.
36

lib/src/models/documents/nodes/leaf.dart

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -254,10 +254,8 @@ class Embed extends Leaf {
254254
@override
255255
Embeddable get value => super.value as Embeddable;
256256

257-
// Embed nodes are represented as empty string in plain text.
257+
// Embed nodes are represented as unicode object replacement character in
258+
// plain text.
258259
@override
259-
String toPlainText() => '';
260-
261-
@override
262-
String toString() => kObjectReplacementCharacter;
260+
String toPlainText() => kObjectReplacementCharacter;
263261
}

lib/src/widgets/raw_editor/raw_editor_state_selection_delegate_mixin.dart

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'dart:math' as math;
33
import 'package:flutter/rendering.dart';
44
import 'package:flutter/widgets.dart';
55

6+
import '../../models/documents/nodes/leaf.dart';
67
import '../../utils/delta.dart';
78
import '../editor.dart';
89

@@ -19,9 +20,28 @@ mixin RawEditorStateSelectionDelegateMixin on EditorState
1920
final oldText = widget.controller.document.toPlainText();
2021
final newText = value.text;
2122
final diff = getDiff(oldText, newText, cursorPosition);
23+
final insertedText = _adjustInsertedText(diff.inserted);
2224

2325
widget.controller.replaceText(
24-
diff.start, diff.deleted.length, diff.inserted, value.selection);
26+
diff.start, diff.deleted.length, insertedText, value.selection);
27+
}
28+
29+
String _adjustInsertedText(String text) {
30+
// For clip from editor, it may contain image, a.k.a 65532 or '\uFFFC'.
31+
// For clip from browser, image is directly ignore.
32+
// Here we skip image when pasting.
33+
if (!text.codeUnits.contains(Embed.kObjectReplacementInt)) {
34+
return text;
35+
}
36+
37+
final sb = StringBuffer();
38+
for (var i = 0; i < text.length; i++) {
39+
if (text.codeUnitAt(i) == Embed.kObjectReplacementInt) {
40+
continue;
41+
}
42+
sb.write(text[i]);
43+
}
44+
return sb.toString();
2545
}
2646

2747
@override

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: flutter_quill
22
description: A rich text editor supporting mobile and web (Demo App @ bulletjournal.us)
3-
version: 3.7.1
3+
version: 3.7.2
44
#author: bulletjournal
55
homepage: https://bulletjournal.us/home/index.html
66
repository: https://github.com/singerdmx/flutter-quill

0 commit comments

Comments
 (0)