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.
79 lines
3.1 KiB
79 lines
3.1 KiB
import 'package:flutter/widgets.dart' show BuildContext; |
|
import 'package:flutter_quill/flutter_quill.dart'; |
|
import 'package:meta/meta.dart' show immutable; |
|
|
|
import '../../services/image_picker/s_image_picker.dart'; |
|
import '../../services/image_saver/s_image_saver.dart'; |
|
|
|
/// Configurations for Flutter Editor Extensions |
|
/// shared between toolbar and editor |
|
@immutable |
|
class QuillSharedExtensionsConfigurations { |
|
const QuillSharedExtensionsConfigurations({ |
|
ImagePickerService? imagePickerService, |
|
ImageSaverService? imageSaverService, |
|
this.assetsPrefix = 'assets', |
|
}) : _imagePickerService = imagePickerService, |
|
_imageSaverService = imageSaverService; |
|
|
|
/// Get the instance from the widget tree in [QuillSharedConfigurations] |
|
/// if it doesn't exists, we will create new one with default options |
|
factory QuillSharedExtensionsConfigurations.get({ |
|
required BuildContext context, |
|
}) { |
|
final value = context.quillSharedConfigurations?.extraConfigurations[key]; |
|
if (value != null) { |
|
if (value is! QuillSharedExtensionsConfigurations) { |
|
throw ArgumentError( |
|
'The value of key `$key` should be of type ' |
|
'$key', |
|
); |
|
} |
|
return value; |
|
} |
|
return const QuillSharedExtensionsConfigurations(); |
|
} |
|
|
|
/// The key to be used in the `extraConfigurations` property |
|
/// which can be found in the [QuillSharedConfigurations] |
|
/// which lives in the [QuillConfigurations] |
|
/// |
|
/// which exists in the [QuillEditorConfigurations] |
|
static const String key = 'QuillSharedExtensionsConfigurations'; |
|
|
|
/// Defaults to [ImagePickerService.defaultImpl] |
|
final ImagePickerService? _imagePickerService; |
|
|
|
/// A getter method which returns the [ImagePickerService] that is provided |
|
/// by the developer, if it can't be found then we will use default impl |
|
ImagePickerService get imagePickerService { |
|
return _imagePickerService ?? ImagePickerService.defaultImpl(); |
|
} |
|
|
|
/// Default to [ImageSaverService.defaultImpl] |
|
final ImageSaverService? _imageSaverService; |
|
|
|
/// A getter method which returns the [ImageSaverService] that is provided |
|
/// by the developer, if it can't be found then we will use default impl |
|
ImageSaverService get imageSaverService { |
|
return _imageSaverService ?? ImageSaverService.defaultImpl(); |
|
} |
|
|
|
/// The property [assetsPrefix] should be the start of your assets folder |
|
/// by default it to `assets` and the reason why we need to know it |
|
/// |
|
/// Because in case when you don't define a value for [ImageProviderBuilder] |
|
/// in the [QuillEditorImageEmbedConfigurations] which exists in |
|
/// [FlutterQuillEmbeds.editorBuilders] |
|
/// |
|
/// then the only way of how to know if this is asset image that you added |
|
/// in the `pubspec.yaml` is by asking you the assetsPrefix, how should the |
|
/// start of your asset images usualy looks like?? in most projects it's |
|
/// assets so we will go with that as a default |
|
/// |
|
/// but if you are using different name and you want to use assets images |
|
/// in the [QuillEditor] then it's important to override this |
|
/// |
|
/// if you want a custom solution then please use [imageProviderBuilder] |
|
final String assetsPrefix; |
|
}
|
|
|