Use `OffsetValue` struct for embed node

pull/1128/head
Adil Hanney 2 years ago
parent 0b0e671fca
commit 007e07357c
  1. 2
      README.md
  2. 2
      doc_cn.md
  3. 3
      example/lib/pages/home_page.dart
  4. 6
      flutter_quill_extensions/lib/embeds/builders.dart
  5. 6
      lib/src/utils/embeds.dart
  6. 2
      lib/src/widgets/raw_editor.dart

@ -319,7 +319,7 @@ Future<void> _addEditNote(BuildContext context, {Document? document}) async {
final length = controller.selection.extentOffset - index;
if (isEditing) {
final offset = getEmbedNode(controller, controller.selection.start).item1;
final offset = getEmbedNode(controller, controller.selection.start).offset;
controller.replaceText(
offset, 1, block, TextSelection.collapsed(offset: offset));
} else {

@ -328,7 +328,7 @@ Future<void> _addEditNote(BuildContext context, {Document? document}) async {
final length = controller.selection.extentOffset - index;
if (isEditing) {
final offset = getEmbedNode(controller, controller.selection.start).item1;
final offset = getEmbedNode(controller, controller.selection.start).offset;
controller.replaceText(
offset, 1, block, TextSelection.collapsed(offset: offset));
} else {

@ -475,7 +475,8 @@ class _HomePageState extends State<HomePage> {
final length = controller.selection.extentOffset - index;
if (isEditing) {
final offset = getEmbedNode(controller, controller.selection.start).item1;
final offset =
getEmbedNode(controller, controller.selection.start).offset;
controller.replaceText(
offset, 1, block, TextSelection.collapsed(offset: offset));
} else {

@ -86,7 +86,7 @@ class ImageEmbedBuilder implements EmbedBuilder {
controller
..skipRequestKeyboard = true
..formatText(
res.item1, 1, StyleAttribute(attr));
res.offset, 1, StyleAttribute(attr));
},
imageWidth: _imageSize?.width,
imageHeight: _imageSize?.height,
@ -102,7 +102,7 @@ class ImageEmbedBuilder implements EmbedBuilder {
onPressed: () {
final imageNode =
getEmbedNode(controller, controller.selection.start)
.item2;
.value;
final imageUrl = imageNode.value.data;
controller.copiedImageUrl =
ImageUrl(imageUrl, getImageStyleString(controller));
@ -116,7 +116,7 @@ class ImageEmbedBuilder implements EmbedBuilder {
onPressed: () {
final offset =
getEmbedNode(controller, controller.selection.start)
.item1;
.offset;
controller.replaceText(offset, 1, '',
TextSelection.collapsed(offset: offset));
Navigator.pop(context);

@ -1,10 +1,10 @@
import 'dart:math';
import '../models/documents/nodes/leaf.dart';
import '../models/structs/offset_value.dart';
import '../widgets/controller.dart';
Tuple2<int, Embed> getEmbedNode(QuillController controller, int offset) {
OffsetValue<Embed> getEmbedNode(QuillController controller, int offset) {
var offset = controller.selection.start;
var embedNode = controller.queryNode(offset);
if (embedNode == null || !(embedNode is Embed)) {
@ -12,7 +12,7 @@ Tuple2<int, Embed> getEmbedNode(QuillController controller, int offset) {
embedNode = controller.queryNode(offset);
}
if (embedNode != null && embedNode is Embed) {
return Tuple2(offset, embedNode);
return OffsetValue(offset, embedNode);
}
return throw 'Embed node not found by offset $offset';

@ -1284,7 +1284,7 @@ class RawEditorState extends EditorState
controller.replaceText(
index, length, BlockEmbed.image(copied.url), null);
if (copied.styleString.isNotEmpty) {
controller.formatText(getEmbedNode(controller, index + 1).item1, 1,
controller.formatText(getEmbedNode(controller, index + 1).offset, 1,
StyleAttribute(copied.styleString));
}
controller.copiedImageUrl = null;

Loading…
Cancel
Save