Update flutter_quill_extensions

pull/1530/head
Ellet 1 year ago
parent f5f1c8f068
commit 602af7faab
No known key found for this signature in database
GPG Key ID: C488CC70BBCEF0D1
  1. 3
      flutter_quill_extensions/CHANGELOG.md
  2. 4
      flutter_quill_extensions/lib/flutter_quill_extensions.dart
  3. 20
      flutter_quill_extensions/lib/logic/models/config/shared_configurations.dart
  4. 2
      flutter_quill_extensions/lib/presentation/embeds/editor/image/image.dart
  5. 4
      flutter_quill_extensions/lib/presentation/embeds/editor/image/image_menu.dart
  6. 21
      flutter_quill_extensions/lib/presentation/embeds/widgets/image.dart

@ -1,3 +1,6 @@
## 0.6.8
- Feature: Allow the developer to override the `assetsPrefix` and default value is `assets`, you should define this correctly if you planning on using asset images in the `QuillEditor`, take a look at `QuillSharedExtensionsConfigurations` class for more info
## 0.6.7
- Support the new localization system of `flutter_quill`

@ -12,7 +12,6 @@ import 'presentation/embeds/editor/webview.dart';
import 'presentation/embeds/toolbar/camera_button/camera_button.dart';
import 'presentation/embeds/toolbar/formula_button.dart';
import 'presentation/embeds/toolbar/image_button/image_button.dart';
import 'presentation/embeds/toolbar/video_button/video_button.dart';
import 'presentation/models/config/editor/image/image.dart';
import 'presentation/models/config/editor/image/image_web.dart';
@ -43,9 +42,7 @@ export 'presentation/embeds/toolbar/image_button/image_button.dart';
export 'presentation/embeds/toolbar/media_button/media_button.dart';
export 'presentation/embeds/toolbar/utils/image_video_utils.dart';
export 'presentation/embeds/toolbar/video_button/video_button.dart';
export 'presentation/utils/utils.dart';
export 'presentation/models/config/editor/image/image.dart';
export 'presentation/models/config/editor/image/image_web.dart';
export 'presentation/models/config/editor/video/video.dart';
export 'presentation/models/config/editor/video/video_web.dart';
@ -54,6 +51,7 @@ export 'presentation/models/config/toolbar/buttons/formula.dart';
export 'presentation/models/config/toolbar/buttons/image.dart';
export 'presentation/models/config/toolbar/buttons/media_button.dart';
export 'presentation/models/config/toolbar/buttons/video.dart';
export 'presentation/utils/utils.dart';
@immutable
class FlutterQuillEmbeds {

@ -32,11 +32,13 @@ import '../../services/image_saver/s_image_saver.dart';
// ),
/// )
/// ```
///
@immutable
class QuillSharedExtensionsConfigurations {
const QuillSharedExtensionsConfigurations({
ImagePickerService? imagePickerService,
ImageSaverService? imageSaverService,
this.assetsPrefix = 'assets',
}) : _imagePickerService = imagePickerService,
_imageSaverService = imageSaverService;
@ -84,4 +86,22 @@ class QuillSharedExtensionsConfigurations {
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;
}

@ -44,6 +44,8 @@ class QuillEditorImageEmbedBuilder extends EmbedBuilder {
alignment: alignment,
height: height,
width: width,
assetsPrefix: QuillSharedExtensionsConfigurations.get(context: context)
.assetsPrefix,
);
// OptionalSize? imageSize;

@ -180,9 +180,7 @@ class ImageOptionsMenu extends StatelessWidget {
MaterialPageRoute(
builder: (context) => ImageTapWrapper(
imageUrl: imageSource,
imageProviderBuilder: configurations.imageProviderBuilder,
imageErrorWidgetBuilder:
configurations.imageErrorWidgetBuilder,
configurations: configurations,
),
),
),

@ -5,6 +5,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_quill/flutter_quill.dart';
import 'package:photo_view/photo_view.dart';
import '../../../logic/models/config/shared_configurations.dart';
import '../../models/config/editor/image/image.dart';
import '../embed_types/image.dart';
import '../../utils/utils.dart';
@ -34,6 +36,7 @@ String getImageStyleString(QuillController controller) {
ImageProvider getImageProviderByImageSource(
String imageSource, {
required ImageEmbedBuilderProviderBuilder? imageProviderBuilder,
required String assetsPrefix,
}) {
if (imageProviderBuilder != null) {
return imageProviderBuilder(imageSource);
@ -46,7 +49,8 @@ ImageProvider getImageProviderByImageSource(
if (isHttpBasedUrl(imageSource)) {
return NetworkImage(imageSource);
}
if (imageSource.startsWith('assets')) {
if (imageSource.startsWith(assetsPrefix)) {
// TODO: This impl needs to be improved
return AssetImage(imageSource);
}
@ -57,6 +61,7 @@ Image getImageWidgetByImageSource(
String imageSource, {
required ImageEmbedBuilderProviderBuilder? imageProviderBuilder,
required ImageErrorWidgetBuilder? imageErrorWidgetBuilder,
required String assetsPrefix,
double? width,
double? height,
AlignmentGeometry alignment = Alignment.center,
@ -65,6 +70,7 @@ Image getImageWidgetByImageSource(
image: getImageProviderByImageSource(
imageSource,
imageProviderBuilder: imageProviderBuilder,
assetsPrefix: assetsPrefix,
),
width: width,
height: height,
@ -102,14 +108,12 @@ String appendFileExtensionToImageUrl(String url) {
class ImageTapWrapper extends StatelessWidget {
const ImageTapWrapper({
required this.imageUrl,
required this.imageProviderBuilder,
required this.imageErrorWidgetBuilder,
required this.configurations,
super.key,
});
final String imageUrl;
final ImageEmbedBuilderProviderBuilder? imageProviderBuilder;
final ImageEmbedBuilderErrorWidgetBuilder? imageErrorWidgetBuilder;
final QuillEditorImageEmbedConfigurations configurations;
@override
Widget build(BuildContext context) {
@ -123,9 +127,12 @@ class ImageTapWrapper extends StatelessWidget {
PhotoView(
imageProvider: getImageProviderByImageSource(
imageUrl,
imageProviderBuilder: imageProviderBuilder,
imageProviderBuilder: configurations.imageProviderBuilder,
assetsPrefix:
QuillSharedExtensionsConfigurations.get(context: context)
.assetsPrefix,
),
errorBuilder: imageErrorWidgetBuilder,
errorBuilder: configurations.imageErrorWidgetBuilder,
loadingBuilder: (context, event) {
return Container(
color: Colors.black,

Loading…
Cancel
Save