dartlangeditorflutterflutter-appsflutter-examplesflutter-packageflutter-widgetquillquill-deltaquilljsreactquillrich-textrich-text-editorwysiwygwysiwyg-editor
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.8 KiB
75 lines
1.8 KiB
import 'package:flutter_quill/flutter_quill.dart'; |
|
|
|
// ignore: unused_import |
|
import '../../presentation/embeds/editor/webview.dart'; |
|
import '../utils/quill_image_utils.dart'; |
|
|
|
/// Extension functions on [QuillController] |
|
/// that make it easier to insert the embed blocks |
|
/// |
|
/// and provide some other extra utilities |
|
extension QuillControllerExt on QuillController { |
|
int get index => selection.baseOffset; |
|
int get length => selection.extentOffset - index; |
|
|
|
/// Insert webview embed block, it requires [initialUrl] to load |
|
/// the initial page |
|
// void insertWebViewBlock({ |
|
// required String initialUrl, |
|
// }) { |
|
// final block = BlockEmbed.custom( |
|
// QuillEditorWebViewBlockEmbed( |
|
// initialUrl, |
|
// ), |
|
// ); |
|
|
|
// this |
|
// ..skipRequestKeyboard = true |
|
// ..replaceText( |
|
// index, |
|
// length, |
|
// block, |
|
// null, |
|
// ); |
|
// } |
|
|
|
/// Insert image embed block, it requires the [imageSource] |
|
/// |
|
/// it could be local image on the system file |
|
/// http image on the network |
|
/// |
|
/// image base 64 |
|
void insertImageBlock({ |
|
required String imageSource, |
|
}) { |
|
this |
|
..skipRequestKeyboard = true |
|
..replaceText( |
|
index, |
|
length, |
|
BlockEmbed.image(imageSource), |
|
null, |
|
); |
|
} |
|
|
|
/// Insert video embed block, it requires the [videoUrl] |
|
/// |
|
/// it could be the video url directly (.mp4) |
|
/// either locally on file system |
|
/// or http video on the network |
|
/// |
|
/// it also supports youtube video url |
|
void insertVideoBlock({ |
|
required String videoUrl, |
|
}) { |
|
this |
|
..skipRequestKeyboard = true |
|
..replaceText(index, length, BlockEmbed.video(videoUrl), null); |
|
} |
|
|
|
QuillImageUtilities get imageUtilities { |
|
return QuillImageUtilities( |
|
controller: this, |
|
); |
|
} |
|
}
|
|
|