fix around image use backspace key can't delete break line.

pull/1309/head
hehong 2 years ago
parent a353ef1a18
commit bf18d92190
  1. 3
      flutter_quill_extensions/lib/embeds/builders.dart
  2. 13
      lib/src/models/rules/delete.dart

@ -21,6 +21,9 @@ class ImageEmbedBuilder extends EmbedBuilder {
@override @override
String get key => BlockEmbed.imageType; String get key => BlockEmbed.imageType;
@override
bool get expanded => false;
@override @override
Widget build( Widget build(
BuildContext context, BuildContext context,

@ -1,4 +1,5 @@
import '../documents/attribute.dart'; import '../documents/attribute.dart';
import '../documents/nodes/embeddable.dart';
import '../quill_delta.dart'; import '../quill_delta.dart';
import 'rule.dart'; import 'rule.dart';
@ -118,6 +119,12 @@ class EnsureEmbedLineRule extends DeleteRule {
final itr = DeltaIterator(document); final itr = DeltaIterator(document);
var op = itr.skip(index); 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; int? indexDelta = 0, lengthDelta = 0, remain = len;
var embedFound = op != null && op.data is! String; var embedFound = op != null && op.data is! String;
final hasLineBreakBefore = final hasLineBreakBefore =
@ -157,4 +164,10 @@ class EnsureEmbedLineRule extends DeleteRule {
..retain(index + indexDelta) ..retain(index + indexDelta)
..delete(len! + lengthDelta); ..delete(len! + lengthDelta);
} }
bool _isVideo(op) {
return op != null &&
op.data is! String &&
!(op.data as Map).containsKey(BlockEmbed.videoType);
}
} }

Loading…
Cancel
Save