Add toPlainText method to `EmbedBuilder`

pull/1280/head
Cierra_Runis 2 years ago
parent 90d1bf2c5e
commit 89e9ac06ed
No known key found for this signature in database
GPG Key ID: 6A879A1FDB3BF78
  1. 9
      lib/src/models/documents/document.dart
  2. 9
      lib/src/models/documents/nodes/container.dart
  3. 31
      lib/src/models/documents/nodes/leaf.dart
  4. 7
      lib/src/models/documents/nodes/line.dart
  5. 6
      lib/src/models/documents/nodes/node.dart
  6. 3
      lib/src/widgets/embeds.dart

@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import '../../widgets/embeds.dart';
import '../quill_delta.dart'; import '../quill_delta.dart';
import '../rules/rule.dart'; import '../rules/rule.dart';
import '../structs/doc_change.dart'; import '../structs/doc_change.dart';
@ -349,7 +350,13 @@ class Document {
} }
/// Returns plain text representation of this document. /// Returns plain text representation of this document.
String toPlainText() => _root.children.map((e) => e.toPlainText()).join(); String toPlainText([
Iterable<EmbedBuilder>? embedBuilders,
EmbedBuilder? unknownEmbedBuilder,
]) =>
_root.children
.map((e) => e.toPlainText(embedBuilders, unknownEmbedBuilder))
.join();
void _loadDocument(Delta doc) { void _loadDocument(Delta doc) {
if (doc.isEmpty) { if (doc.isEmpty) {

@ -1,5 +1,6 @@
import 'dart:collection'; import 'dart:collection';
import '../../../widgets/embeds.dart';
import '../style.dart'; import '../style.dart';
import 'leaf.dart'; import 'leaf.dart';
import 'line.dart'; import 'line.dart';
@ -103,7 +104,13 @@ abstract class Container<T extends Node?> extends Node {
} }
@override @override
String toPlainText() => children.map((child) => child.toPlainText()).join(); String toPlainText([
Iterable<EmbedBuilder>? embedBuilders,
EmbedBuilder? unknownEmbedBuilder,
]) =>
children
.map((e) => e.toPlainText(embedBuilders, unknownEmbedBuilder))
.join();
/// Content length of this node's children. /// Content length of this node's children.
/// ///

@ -1,5 +1,6 @@
import 'dart:math' as math; import 'dart:math' as math;
import '../../../widgets/embeds.dart';
import '../../quill_delta.dart'; import '../../quill_delta.dart';
import '../style.dart'; import '../style.dart';
import 'embeddable.dart'; import 'embeddable.dart';
@ -224,7 +225,11 @@ class Text extends Leaf {
String get value => _value as String; String get value => _value as String;
@override @override
String toPlainText() => value; String toPlainText([
Iterable<EmbedBuilder>? embedBuilders,
EmbedBuilder? unknownEmbedBuilder,
]) =>
value;
} }
/// An embed node inside of a line in a Quill document. /// An embed node inside of a line in a Quill document.
@ -257,7 +262,29 @@ class Embed extends Leaf {
// Embed nodes are represented as unicode object replacement character in // Embed nodes are represented as unicode object replacement character in
// plain text. // plain text.
@override @override
String toPlainText() => kObjectReplacementCharacter; String toPlainText([
Iterable<EmbedBuilder>? embedBuilders,
EmbedBuilder? unknownEmbedBuilder,
]) {
final builders = embedBuilders;
print('这里是 ${toString()}');
if (builders != null) {
for (final builder in builders) {
print('${builder.key} ${value.type}');
if (builder.key == value.type) {
return builder.toPlainText(this);
}
}
}
if (unknownEmbedBuilder != null) {
return unknownEmbedBuilder.toPlainText(this);
}
return Embed.kObjectReplacementCharacter;
}
@override @override
String toString() => '${super.toString()} ${value.type}'; String toString() => '${super.toString()} ${value.type}';

@ -2,6 +2,7 @@ import 'dart:math' as math;
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import '../../../widgets/embeds.dart';
import '../../quill_delta.dart'; import '../../quill_delta.dart';
import '../../structs/offset_value.dart'; import '../../structs/offset_value.dart';
import '../attribute.dart'; import '../attribute.dart';
@ -65,7 +66,11 @@ class Line extends Container<Leaf?> {
} }
@override @override
String toPlainText() => '${super.toPlainText()}\n'; String toPlainText([
Iterable<EmbedBuilder>? embedBuilders,
EmbedBuilder? unknownEmbedBuilder,
]) =>
'${super.toPlainText(embedBuilders, unknownEmbedBuilder)}\n';
@override @override
String toString() { String toString() {

@ -1,5 +1,6 @@
import 'dart:collection'; import 'dart:collection';
import '../../../widgets/embeds.dart';
import '../../quill_delta.dart'; import '../../quill_delta.dart';
import '../attribute.dart'; import '../attribute.dart';
import '../style.dart'; import '../style.dart';
@ -109,7 +110,10 @@ abstract class Node extends LinkedListEntry<Node> {
Node newInstance(); Node newInstance();
String toPlainText(); String toPlainText([
Iterable<EmbedBuilder>? embedBuilders,
EmbedBuilder? unknownEmbedBuilder,
]);
Delta toDelta(); Delta toDelta();

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../extensions.dart';
import '../models/documents/nodes/leaf.dart' as leaf; import '../models/documents/nodes/leaf.dart' as leaf;
import '../models/themes/quill_dialog_theme.dart'; import '../models/themes/quill_dialog_theme.dart';
import '../models/themes/quill_icon_theme.dart'; import '../models/themes/quill_icon_theme.dart';
@ -15,6 +16,8 @@ abstract class EmbedBuilder {
return WidgetSpan(child: widget); return WidgetSpan(child: widget);
} }
String toPlainText(Embed node) => Embed.kObjectReplacementCharacter;
Widget build( Widget build(
BuildContext context, BuildContext context,
QuillController controller, QuillController controller,

Loading…
Cancel
Save