build method

  1. @override
Widget build(
  1. BuildContext context,
  2. QuillController controller,
  3. Embed node,
  4. bool readOnly,
  5. bool inline,
  6. TextStyle textStyle,
)

Implementation

@override
Widget build(
  BuildContext context,
  QuillController controller,
  Embed node,
  bool readOnly,
  bool inline,
  TextStyle textStyle,
) {
  // assert(!kIsWeb, 'Please provide image EmbedBuilder for Web');

  final imageSource = standardizeImageUrl(node.value.data);
  final ((imageSize), margin, alignment) = getElementAttributes(
    node,
    context,
  );

  final width = imageSize.width;
  final height = imageSize.height;

  final image = getImageWidgetByImageSource(
    context: context,
    imageSource,
    imageProviderBuilder: configurations.imageProviderBuilder,
    imageErrorWidgetBuilder: configurations.imageErrorWidgetBuilder,
    alignment: alignment,
    height: height,
    width: width,
    assetsPrefix: QuillSharedExtensionsConfigurations.get(context: context)
        .assetsPrefix,
  );

  final imageSaverService =
      QuillSharedExtensionsConfigurations.get(context: context)
          .imageSaverService;
  return GestureDetector(
    onTap: () {
      final onImageClicked = configurations.onImageClicked;
      if (onImageClicked != null) {
        onImageClicked(imageSource);
        return;
      }
      showDialog(
        context: context,
        builder: (_) => FlutterQuillLocalizationsWidget(
          child: ImageOptionsMenu(
            controller: controller,
            configurations: configurations,
            imageSource: imageSource,
            imageSize: imageSize,
            isReadOnly: readOnly,
            imageSaverService: imageSaverService,
          ),
        ),
      );
    },
    child: Builder(
      builder: (context) {
        if (margin != null) {
          return Padding(
            padding: EdgeInsets.all(margin),
            child: image,
          );
        }
        return image;
      },
    ),
  );
}