diff --git a/flutter_quill_extensions/lib/embeds/builders.dart b/flutter_quill_extensions/lib/embeds/builders.dart index b16b5845..6b392b8e 100644 --- a/flutter_quill_extensions/lib/embeds/builders.dart +++ b/flutter_quill_extensions/lib/embeds/builders.dart @@ -21,6 +21,9 @@ class ImageEmbedBuilder extends EmbedBuilder { @override String get key => BlockEmbed.imageType; + @override + bool get expanded => false; + @override Widget build( BuildContext context, diff --git a/lib/src/models/rules/delete.dart b/lib/src/models/rules/delete.dart index caf8cf6a..205269fd 100644 --- a/lib/src/models/rules/delete.dart +++ b/lib/src/models/rules/delete.dart @@ -1,4 +1,5 @@ import '../documents/attribute.dart'; +import '../documents/nodes/embeddable.dart'; import '../quill_delta.dart'; import 'rule.dart'; @@ -118,6 +119,12 @@ class EnsureEmbedLineRule extends DeleteRule { final itr = DeltaIterator(document); var op = itr.skip(index); + final opAfter = itr.skip(index + 1); + + if (!_isVideo(op) || !_isVideo(opAfter)) { + return null; + } + int? indexDelta = 0, lengthDelta = 0, remain = len; var embedFound = op != null && op.data is! String; final hasLineBreakBefore = @@ -157,4 +164,10 @@ class EnsureEmbedLineRule extends DeleteRule { ..retain(index + indexDelta) ..delete(len! + lengthDelta); } + + bool _isVideo(op) { + return op != null && + op.data is! String && + !(op.data as Map).containsKey(BlockEmbed.videoType); + } }