parent
fae49d650f
commit
5ab42494b6
2 changed files with 156 additions and 156 deletions
@ -0,0 +1,155 @@ |
||||
import 'package:flutter/foundation.dart' show kIsWeb; |
||||
import 'package:flutter_quill/flutter_quill.dart' as fq; |
||||
import 'package:meta/meta.dart' show immutable; |
||||
|
||||
import 'embeds/image/editor/image_embed.dart'; |
||||
import 'embeds/image/editor/image_web_embed.dart'; |
||||
import 'embeds/image/toolbar/image_button.dart'; |
||||
import 'embeds/others/camera_button/camera_button.dart'; |
||||
import 'embeds/video/editor/video_embed.dart'; |
||||
import 'embeds/video/editor/video_web_embed.dart'; |
||||
import 'embeds/video/toolbar/video_button.dart'; |
||||
import 'models/config/camera/camera_configurations.dart'; |
||||
import 'models/config/image/editor/image_configurations.dart'; |
||||
import 'models/config/image/toolbar/image_configurations.dart'; |
||||
import 'models/config/media/media_button_configurations.dart'; |
||||
import 'models/config/video/editor/video_configurations.dart'; |
||||
import 'models/config/video/editor/video_web_configurations.dart'; |
||||
import 'models/config/video/toolbar/video_configurations.dart'; |
||||
|
||||
@immutable |
||||
class FlutterQuillEmbeds { |
||||
const FlutterQuillEmbeds._(); |
||||
|
||||
/// Returns a list of embed builders for [fq.QuillEditor]. |
||||
/// |
||||
/// This method provides a collection of embed builders to enhance the |
||||
/// functionality |
||||
/// of a [fq.QuillEditor]. It offers customization options for |
||||
/// handling various types of |
||||
/// embedded content, such as images, videos, and formulas. |
||||
/// |
||||
/// The method returns a list of [fq.EmbedBuilder] objects that can be used with |
||||
/// QuillEditor |
||||
/// to enable embedded content features like images, videos, and formulas. |
||||
/// |
||||
/// |
||||
/// final quillEditor = QuillEditor( |
||||
/// // Other editor configurations |
||||
/// embedBuilders: embedBuilders, |
||||
/// ); |
||||
/// ``` |
||||
/// |
||||
static List<fq.EmbedBuilder> editorBuilders({ |
||||
QuillEditorImageEmbedConfigurations? imageEmbedConfigurations = |
||||
const QuillEditorImageEmbedConfigurations(), |
||||
QuillEditorVideoEmbedConfigurations? videoEmbedConfigurations = |
||||
const QuillEditorVideoEmbedConfigurations(), |
||||
}) { |
||||
if (kIsWeb) { |
||||
throw UnsupportedError( |
||||
'The editorBuilders() is not for web, please use editorBuilders() ' |
||||
'instead', |
||||
); |
||||
} |
||||
return [ |
||||
if (imageEmbedConfigurations != null) |
||||
QuillEditorImageEmbedBuilder( |
||||
configurations: imageEmbedConfigurations, |
||||
), |
||||
if (videoEmbedConfigurations != null) |
||||
QuillEditorVideoEmbedBuilder( |
||||
configurations: videoEmbedConfigurations, |
||||
), |
||||
]; |
||||
} |
||||
|
||||
/// Returns a list of embed builders specifically designed for web support. |
||||
/// |
||||
/// [QuillEditorWebImageEmbedBuilder] is the embed builder for handling |
||||
/// images on the web. this will use <img> tag of HTML |
||||
/// |
||||
/// [QuillEditorWebVideoEmbedBuilder] is the embed builder for handling |
||||
/// videos iframe on the web. this will use <iframe> tag of HTML |
||||
/// |
||||
static List<fq.EmbedBuilder> editorWebBuilders({ |
||||
QuillEditorImageEmbedConfigurations? imageEmbedConfigurations = |
||||
const QuillEditorImageEmbedConfigurations(), |
||||
QuillEditorWebVideoEmbedConfigurations? videoEmbedConfigurations = |
||||
const QuillEditorWebVideoEmbedConfigurations(), |
||||
}) { |
||||
if (!kIsWeb) { |
||||
throw UnsupportedError( |
||||
'The editorsWebBuilders() is only for web, please use editorBuilders() ' |
||||
'instead for other platforms', |
||||
); |
||||
} |
||||
return [ |
||||
if (imageEmbedConfigurations != null) |
||||
QuillEditorImageEmbedBuilder( |
||||
configurations: imageEmbedConfigurations, |
||||
), |
||||
if (videoEmbedConfigurations != null) |
||||
QuillEditorWebVideoEmbedBuilder( |
||||
configurations: videoEmbedConfigurations, |
||||
), |
||||
]; |
||||
} |
||||
|
||||
/// Returns a list of default embed builders for QuillEditor. |
||||
/// |
||||
/// It will use [editorWebBuilders] for web and [editorBuilders] for others |
||||
/// |
||||
/// It's not customizable with minimal configurations |
||||
static List<fq.EmbedBuilder> defaultEditorBuilders() { |
||||
return kIsWeb ? editorWebBuilders() : editorBuilders(); |
||||
} |
||||
|
||||
/// Returns a list of embed button builders to customize the toolbar buttons. |
||||
/// |
||||
/// If you don't want to show one of the buttons for soem reason, |
||||
/// pass null to the options of it |
||||
/// |
||||
/// The returned list contains embed button builders for the Quill toolbar. |
||||
static List<fq.EmbedButtonBuilder> toolbarButtons({ |
||||
QuillToolbarImageButtonOptions? imageButtonOptions = |
||||
const QuillToolbarImageButtonOptions(), |
||||
QuillToolbarVideoButtonOptions? videoButtonOptions = |
||||
const QuillToolbarVideoButtonOptions(), |
||||
QuillToolbarCameraButtonOptions? cameraButtonOptions, |
||||
QuillToolbarMediaButtonOptions? mediaButtonOptions, |
||||
}) => |
||||
[ |
||||
if (imageButtonOptions != null) |
||||
(controller, toolbarIconSize, iconTheme, dialogTheme) => |
||||
QuillToolbarImageButton( |
||||
controller: controller, |
||||
options: imageButtonOptions, |
||||
), |
||||
if (videoButtonOptions != null) |
||||
(controller, toolbarIconSize, iconTheme, dialogTheme) => |
||||
QuillToolbarVideoButton( |
||||
controller: controller, |
||||
options: videoButtonOptions, |
||||
), |
||||
if (cameraButtonOptions != null) |
||||
(controller, toolbarIconSize, iconTheme, dialogTheme) => |
||||
QuillToolbarCameraButton( |
||||
controller: controller, |
||||
options: cameraButtonOptions, |
||||
), |
||||
// if (mediaButtonOptions != null) |
||||
// (controller, toolbarIconSize, iconTheme, dialogTheme) => |
||||
// QuillToolbarMediaButton( |
||||
// controller: mediaButtonOptions.controller ?? controller, |
||||
// options: mediaButtonOptions, |
||||
// ), |
||||
// Drop the support for formula button for now |
||||
// if (formulaButtonOptions != null) |
||||
// (controller, toolbarIconSize, iconTheme, dialogTheme) => |
||||
// QuillToolbarFormulaButton( |
||||
// controller: formulaButtonOptions.controller ?? controller, |
||||
// options: formulaButtonOptions, |
||||
// ), |
||||
]; |
||||
} |
Loading…
Reference in new issue