fix getPlainText()

pull/609/head
li3317 3 years ago
parent 4970a3b091
commit 9ab557b8d2
  1. 23
      lib/src/models/documents/nodes/line.dart

@ -452,34 +452,29 @@ class Line extends Container<Leaf?> {
final res = _getPlainText(offset, len); final res = _getPlainText(offset, len);
if (res.length == 1) { if (res.length == 1) {
final data = queryChild(offset, true); final data = queryChild(offset, true);
if ((data.node as Leaf) is Embed) {
return '';
}
final text = res.single.item2; final text = res.single.item2;
return text.substring(data.offset, data.offset + len); return text == Embed.kObjectReplacementCharacter
? ''
: text.substring(data.offset, data.offset + len);
} }
final total = <String>[]; final total = <String>[];
// Adjust first node // Adjust first node
final firstNodeLen = res[1].item1; final firstNodeLen = res[1].item1;
var text = res[0].item2; var text = res[0].item2;
if (text != Embed.kObjectReplacementCharacter) { total.add(text.substring(text.length - firstNodeLen));
total.add(text.substring(text.length - firstNodeLen));
}
for (var i = 1; i < res.length - 1; i++) { for (var i = 1; i < res.length - 1; i++) {
if (text != Embed.kObjectReplacementCharacter) { total.add(res[i].item2);
total.add(res[i].item2);
}
} }
// Adjust last node // Adjust last node
final lastNodeLen = len - res[res.length - 1].item1; final lastNodeLen = len - res[res.length - 1].item1;
text = res[res.length - 1].item2; text = res[res.length - 1].item2;
if (text != Embed.kObjectReplacementCharacter) { total.add(text.substring(0, lastNodeLen));
total.add(text.substring(0, lastNodeLen)); return total
} .skipWhile((value) => value == Embed.kObjectReplacementCharacter)
return total.join(); .join();
} }
List<Tuple2<int, String>> _getPlainText(int offset, int len, {int beg = 0}) { List<Tuple2<int, String>> _getPlainText(int offset, int len, {int beg = 0}) {

Loading…
Cancel
Save