From 22180cc315010df9dd0588c732e2eebee8a4370a Mon Sep 17 00:00:00 2001 From: Mohammed Date: Wed, 15 May 2024 17:13:34 +0100 Subject: [PATCH 01/26] Added height and width to image builder --- packages/flutter_markdown/lib/src/builder.dart | 2 +- packages/flutter_markdown/lib/src/widget.dart | 2 +- packages/flutter_markdown/test/image_test.dart | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index b89ef2e70354..8ca827d5003a 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -578,7 +578,7 @@ class MarkdownBuilder implements md.NodeVisitor { final Uri uri = Uri.parse(path); Widget child; if (imageBuilder != null) { - child = imageBuilder!(uri, title, alt); + child = imageBuilder!(uri, title, alt, width, height); } else { child = kDefaultImageBuilder(uri, imageDirectory, width, height); } diff --git a/packages/flutter_markdown/lib/src/widget.dart b/packages/flutter_markdown/lib/src/widget.dart index be7f9d7047c3..802a757e1ed4 100644 --- a/packages/flutter_markdown/lib/src/widget.dart +++ b/packages/flutter_markdown/lib/src/widget.dart @@ -36,7 +36,7 @@ typedef MarkdownTapLinkCallback = void Function( /// /// Used by [MarkdownWidget.imageBuilder] typedef MarkdownImageBuilder = Widget Function( - Uri uri, String? title, String? alt); + Uri uri, String? title, String? alt, double? width, double? height); /// Signature for custom checkbox widget. /// diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index 00677f1b7284..0b13d634ba7b 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -373,8 +373,8 @@ void defineTests() { 'custom image builder', (WidgetTester tester) async { const String data = '![alt](https://img.png)'; - Widget builder(Uri uri, String? title, String? alt) => - Image.asset('assets/logo.png'); + Widget builder(Uri uri, String? title, String? alt, double? width, double? height) => + Image.asset('assets/logo.png',width: width, height: height); await tester.pumpWidget( boilerplate( From c8b90a999e829e8083d7e15c14fb1eea03e38828 Mon Sep 17 00:00:00 2001 From: Mohammed Date: Wed, 15 May 2024 17:41:45 +0100 Subject: [PATCH 02/26] Updated CHANGELOG file --- packages/flutter_markdown/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md index b550b9a29fdb..690625ecc5ba 100644 --- a/packages/flutter_markdown/CHANGELOG.md +++ b/packages/flutter_markdown/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.2 + +* Adds `height` & `width` to `imageBuilder`. + ## 0.7.1 * Allows for choosing a custom font feature to create superscript in footnotes when the font does not support the `supr` font feature. From 025bf8f95732a139079a60b12d5e7e981695867a Mon Sep 17 00:00:00 2001 From: Mohammed Date: Wed, 15 May 2024 17:43:42 +0100 Subject: [PATCH 03/26] format tests --- packages/flutter_markdown/test/image_test.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index 0b13d634ba7b..8f69bce91f47 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -373,8 +373,9 @@ void defineTests() { 'custom image builder', (WidgetTester tester) async { const String data = '![alt](https://img.png)'; - Widget builder(Uri uri, String? title, String? alt, double? width, double? height) => - Image.asset('assets/logo.png',width: width, height: height); + Widget builder(Uri uri, String? title, String? alt, double? width, + double? height) => + Image.asset('assets/logo.png', width: width, height: height); await tester.pumpWidget( boilerplate( From ce61fb5516962bd65d3279cca3b184e22803be80 Mon Sep 17 00:00:00 2001 From: Mohammed CHAHBOUN <69054810+M97Chahboun@users.noreply.github.com> Date: Sat, 18 May 2024 21:19:32 +0100 Subject: [PATCH 04/26] Update pubspec.yaml --- packages/flutter_markdown/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/flutter_markdown/pubspec.yaml b/packages/flutter_markdown/pubspec.yaml index 04d24132024a..0336c962d17b 100644 --- a/packages/flutter_markdown/pubspec.yaml +++ b/packages/flutter_markdown/pubspec.yaml @@ -4,7 +4,7 @@ description: A Markdown renderer for Flutter. Create rich text output, formatted with simple Markdown tags. repository: https://github.com/flutter/packages/tree/main/packages/flutter_markdown issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_markdown%22 -version: 0.7.1 +version: 0.7.2 environment: sdk: ^3.3.0 From d8192d15fa1b3f761cff29ee87c6a4dd7e93b73e Mon Sep 17 00:00:00 2001 From: Mohammed Date: Sun, 19 May 2024 15:42:13 +0100 Subject: [PATCH 05/26] Adds image builder height and width tests --- packages/flutter_markdown/test/image_test.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index 8f69bce91f47..d931fbeb74fc 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -372,7 +372,7 @@ void defineTests() { testWidgets( 'custom image builder', (WidgetTester tester) async { - const String data = '![alt](https://img.png)'; + const String data = '![alt](https://img.png#60x50)'; Widget builder(Uri uri, String? title, String? alt, double? width, double? height) => Image.asset('assets/logo.png', width: width, height: height); @@ -403,6 +403,8 @@ void defineTests() { expect(image.image.runtimeType, AssetImage); expect((image.image as AssetImage).assetName, 'assets/logo.png'); + expect(image.width, 60.0); + expect(image.height, 50.0); // Force the asset image to be rasterized so it can be compared. await tester.runAsync(() async { From 2ef0b8a9a9dbfc0d651723a7bf10c45cc20b9a4d Mon Sep 17 00:00:00 2001 From: Mohammed Date: Sun, 19 May 2024 17:02:28 +0100 Subject: [PATCH 06/26] Added size to precacheImage tests --- packages/flutter_markdown/test/image_test.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index d931fbeb74fc..dc5c5b8da68f 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -409,7 +409,8 @@ void defineTests() { // Force the asset image to be rasterized so it can be compared. await tester.runAsync(() async { final Element element = tester.element(find.byType(Markdown)); - await precacheImage(image.image, element); + await precacheImage(image.image, element, + size: Size(image.width!, image.height!)); }); await tester.pumpAndSettle(); From efb8038356f2b30b9c56c5b7e4aa980f99d028c2 Mon Sep 17 00:00:00 2001 From: Mohammed Date: Wed, 5 Jun 2024 09:15:19 +0100 Subject: [PATCH 07/26] Removed unnecessary size for precacheImage test method --- packages/flutter_markdown/test/image_test.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index dc5c5b8da68f..d931fbeb74fc 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -409,8 +409,7 @@ void defineTests() { // Force the asset image to be rasterized so it can be compared. await tester.runAsync(() async { final Element element = tester.element(find.byType(Markdown)); - await precacheImage(image.image, element, - size: Size(image.width!, image.height!)); + await precacheImage(image.image, element); }); await tester.pumpAndSettle(); From 0357934c523c569653e00d780e3e7d01197e7d10 Mon Sep 17 00:00:00 2001 From: bixat4software Date: Wed, 4 Dec 2024 08:00:54 +0000 Subject: [PATCH 08/26] Revert custom image builder test changes --- packages/flutter_markdown/test/image_test.dart | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index d931fbeb74fc..49bbb8ce9f8f 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -372,10 +372,9 @@ void defineTests() { testWidgets( 'custom image builder', (WidgetTester tester) async { - const String data = '![alt](https://img.png#60x50)'; - Widget builder(Uri uri, String? title, String? alt, double? width, - double? height) => - Image.asset('assets/logo.png', width: width, height: height); + const String data = '![alt](https://img.png)'; + Widget builder(Uri uri, String? title, String? alt, double? width, double? height) => + Image.asset('assets/logo.png'); await tester.pumpWidget( boilerplate( From a6ce01f851d2a3cce1bda62d0da0d51caa889816 Mon Sep 17 00:00:00 2001 From: bixat4software Date: Wed, 4 Dec 2024 12:13:01 +0000 Subject: [PATCH 09/26] Added custom image builder test width and height --- .../flutter_markdown/test/image_test.dart | 50 ++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index 02c8b75a74b2..ee23deb34361 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -442,8 +442,6 @@ void defineTests() { expect(image.image.runtimeType, AssetImage); expect((image.image as AssetImage).assetName, 'assets/logo.png'); - expect(image.width, 60.0); - expect(image.height, 50.0); // Force the asset image to be rasterized so it can be compared. await tester.runAsync(() async { @@ -461,4 +459,52 @@ void defineTests() { skip: kIsWeb, // Goldens are platform-specific. ); }); + + testWidgets( + 'custom image builder test width and height', + (WidgetTester tester) async { + const double height = 200; + const double width = 100; + const String data = '![alt](https://img.png#${width}x$height)'; + Widget builder(Uri uri, String? title, String? alt, double? width, double? height) => + Image.asset('assets/logo.png', width: width, height: height); + + await tester.pumpWidget( + boilerplate( + MaterialApp( + home: DefaultAssetBundle( + bundle: TestAssetBundle(), + child: Center( + child: Container( + color: Colors.white, + width: 500, + child: Markdown( + data: data, + imageBuilder: builder, + ), + ), + ), + ), + ), + ), + ); + + final Iterable widgets = tester.allWidgets; + final Image image = + widgets.firstWhere((Widget widget) => widget is Image) as Image; + + expect(image.image.runtimeType, AssetImage); + expect((image.image as AssetImage).assetName, 'assets/logo.png'); + expect(image.width, width); + expect(image.height, height); + + await tester.runAsync(() async { + final Element element = tester.element(find.byType(Markdown)); + await precacheImage(image.image, element); + }); + + await tester.pumpAndSettle(); + }, + skip: kIsWeb, + ); } From e2729ce2f43135b64fe97a5d4b0fcb1975665335 Mon Sep 17 00:00:00 2001 From: bixat4software Date: Wed, 4 Dec 2024 13:16:09 +0000 Subject: [PATCH 10/26] Added golden test for image size with builder --- .../image_test/custom_image_builder_test.png | Bin 0 -> 8786 bytes packages/flutter_markdown/test/image_test.dart | 5 +++++ 2 files changed, 5 insertions(+) create mode 100644 packages/flutter_markdown/test/assets/images/golden/image_test/custom_image_builder_test.png diff --git a/packages/flutter_markdown/test/assets/images/golden/image_test/custom_image_builder_test.png b/packages/flutter_markdown/test/assets/images/golden/image_test/custom_image_builder_test.png new file mode 100644 index 0000000000000000000000000000000000000000..9e6bad8162b52cf5c4808df1d4de53f6b1693cf7 GIT binary patch literal 8786 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 Date: Wed, 4 Dec 2024 16:18:19 +0000 Subject: [PATCH 11/26] Added custom image builder test width and height to image group test --- .../flutter_markdown/test/image_test.dart | 96 +++++++++---------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index 686e0a0a0f85..d3b7c5f5147c 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -458,58 +458,58 @@ void defineTests() { }, skip: kIsWeb, // Goldens are platform-specific. ); - }); - testWidgets( - 'custom image builder test width and height', - (WidgetTester tester) async { - const double height = 200; - const double width = 100; - const String data = '![alt](https://img.png#${width}x$height)'; - Widget builder(Uri uri, String? title, String? alt, double? width, double? height) => - Image.asset('assets/logo.png', width: width, height: height); - - await tester.pumpWidget( - boilerplate( - MaterialApp( - home: DefaultAssetBundle( - bundle: TestAssetBundle(), - child: Center( - child: Container( - color: Colors.white, - width: 500, - child: Markdown( - data: data, - imageBuilder: builder, + testWidgets( + 'custom image builder test width and height', + (WidgetTester tester) async { + const double height = 200; + const double width = 100; + const String data = '![alt](https://img.png#${width}x$height)'; + Widget builder(Uri uri, String? title, String? alt, double? width, double? height) => + Image.asset('assets/logo.png', width: width, height: height); + + await tester.pumpWidget( + boilerplate( + MaterialApp( + home: DefaultAssetBundle( + bundle: TestAssetBundle(), + child: Center( + child: Container( + color: Colors.white, + width: 500, + child: Markdown( + data: data, + imageBuilder: builder, + ), ), ), ), ), ), - ), - ); - - final Iterable widgets = tester.allWidgets; - final Image image = - widgets.firstWhere((Widget widget) => widget is Image) as Image; - - expect(image.image.runtimeType, AssetImage); - expect((image.image as AssetImage).assetName, 'assets/logo.png'); - expect(image.width, width); - expect(image.height, height); - - await tester.runAsync(() async { - final Element element = tester.element(find.byType(Markdown)); - await precacheImage(image.image, element); - }); - - await tester.pumpAndSettle(); - - await expectLater( - find.byType(Container), - matchesGoldenFile( - 'assets/images/golden/image_test/custom_image_builder_test.png')); - }, - skip: kIsWeb, - ); + ); + + final Iterable widgets = tester.allWidgets; + final Image image = + widgets.firstWhere((Widget widget) => widget is Image) as Image; + + expect(image.image.runtimeType, AssetImage); + expect((image.image as AssetImage).assetName, 'assets/logo.png'); + expect(image.width, width); + expect(image.height, height); + + await tester.runAsync(() async { + final Element element = tester.element(find.byType(Markdown)); + await precacheImage(image.image, element); + }); + + await tester.pumpAndSettle(); + + await expectLater( + find.byType(Container), + matchesGoldenFile( + 'assets/images/golden/image_test/custom_image_builder_test.png')); + }, + skip: kIsWeb, + ); + }); } From ade6d9510d43942559b9d5cbf03a0b41459903d7 Mon Sep 17 00:00:00 2001 From: bixat4software Date: Thu, 5 Dec 2024 16:21:29 +0000 Subject: [PATCH 12/26] Make image configurations extensible by class parameter --- .../flutter_markdown/lib/src/builder.dart | 30 ++++++++++++++++++- packages/flutter_markdown/lib/src/widget.dart | 3 +- packages/flutter_markdown/pubspec.yaml | 2 +- .../flutter_markdown/test/image_test.dart | 6 ++-- 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index 312299e88656..792b21d65917 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -50,6 +50,33 @@ class _TableElement { final List rows = []; } +/// Holds configuration data for an image in a Markdown document. +class MarkdownImageConfig { + + /// Creates a new [MarkdownImageConfig] instance. + MarkdownImageConfig({ + required this.uri, + this.title, + this.alt, + this.width, + this.height, + }); + /// The URI of the image. + final Uri uri; + + /// The title of the image, displayed on hover. + final String? title; + + /// The alternative text for the image, displayed if the image cannot be loaded. + final String? alt; + + /// The desired width of the image. + final double? width; + + /// The desired height of the image. + final double? height; +} + /// A collection of widgets that should be placed adjacent to (inline with) /// other inline elements in the same parent block. /// @@ -609,7 +636,8 @@ class MarkdownBuilder implements md.NodeVisitor { Widget child; if (imageBuilder != null) { - child = imageBuilder!(uri, title, alt, width, height); + final MarkdownImageConfig config = MarkdownImageConfig(uri: uri, alt: alt, title: title, height: height, width: width); + child = imageBuilder!(config); } else { child = kDefaultImageBuilder(uri, imageDirectory, width, height); } diff --git a/packages/flutter_markdown/lib/src/widget.dart b/packages/flutter_markdown/lib/src/widget.dart index 84da044259c1..b85c421f4f72 100644 --- a/packages/flutter_markdown/lib/src/widget.dart +++ b/packages/flutter_markdown/lib/src/widget.dart @@ -35,8 +35,7 @@ typedef MarkdownTapLinkCallback = void Function( /// Signature for custom image widget. /// /// Used by [MarkdownWidget.imageBuilder] -typedef MarkdownImageBuilder = Widget Function( - Uri uri, String? title, String? alt, double? width, double? height); +typedef MarkdownImageBuilder = Widget Function(MarkdownImageConfig config); /// Signature for custom checkbox widget. /// diff --git a/packages/flutter_markdown/pubspec.yaml b/packages/flutter_markdown/pubspec.yaml index 181769edb18a..975fc5a5263f 100644 --- a/packages/flutter_markdown/pubspec.yaml +++ b/packages/flutter_markdown/pubspec.yaml @@ -4,7 +4,7 @@ description: A Markdown renderer for Flutter. Create rich text output, formatted with simple Markdown tags. repository: https://github.com/flutter/packages/tree/main/packages/flutter_markdown issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_markdown%22 -version: 0.7.4+4 +version: 0.8.0 environment: sdk: ^3.3.0 diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index d3b7c5f5147c..35b700338f5a 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -413,7 +413,7 @@ void defineTests() { 'custom image builder', (WidgetTester tester) async { const String data = '![alt](https://img.png)'; - Widget builder(Uri uri, String? title, String? alt, double? width, double? height) => + Widget builder(MarkdownImageConfig config) => Image.asset('assets/logo.png'); await tester.pumpWidget( @@ -465,8 +465,8 @@ void defineTests() { const double height = 200; const double width = 100; const String data = '![alt](https://img.png#${width}x$height)'; - Widget builder(Uri uri, String? title, String? alt, double? width, double? height) => - Image.asset('assets/logo.png', width: width, height: height); + Widget builder(MarkdownImageConfig config) => + Image.asset('assets/logo.png', width: config.width, height: config.height); await tester.pumpWidget( boilerplate( From c4ddc92a9d82daed20bce5d1b15e6b3e6e06810a Mon Sep 17 00:00:00 2001 From: bixat4software Date: Thu, 5 Dec 2024 16:27:53 +0000 Subject: [PATCH 13/26] Updated CHANGELOG --- packages/flutter_markdown/CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md index e206ada29e41..cb5410e867af 100644 --- a/packages/flutter_markdown/CHANGELOG.md +++ b/packages/flutter_markdown/CHANGELOG.md @@ -1,6 +1,6 @@ -## 0.7.4+4 +## 0.8.0 -* Adds `height` & `width` to `imageBuilder`. +* Introduce `MarkdownImageConfig` for image builder. ## 0.7.4+3 From 2a341cb8049a387510b610136a2ffedb55f4d46b Mon Sep 17 00:00:00 2001 From: bixat4software Date: Thu, 5 Dec 2024 17:12:10 +0000 Subject: [PATCH 14/26] Mark imageBuilder as Deprecated --- packages/flutter_markdown/CHANGELOG.md | 2 +- .../flutter_markdown/lib/src/builder.dart | 8 ++++++-- packages/flutter_markdown/lib/src/widget.dart | 19 ++++++++++++++++--- .../flutter_markdown/test/image_test.dart | 4 ++-- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md index cb5410e867af..82e5df5681d1 100644 --- a/packages/flutter_markdown/CHANGELOG.md +++ b/packages/flutter_markdown/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.8.0 -* Introduce `MarkdownImageConfig` for image builder. +* Introduce `MarkdownImageConfig` for `sizedImageBuilder` builder. ## 0.7.4+3 diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index 792b21d65917..941776e28c1f 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -133,6 +133,7 @@ class MarkdownBuilder implements md.NodeVisitor { required this.styleSheet, required this.imageDirectory, required this.imageBuilder, + required this.sizedImageBuilder, required this.checkboxBuilder, required this.bulletBuilder, required this.builders, @@ -161,6 +162,9 @@ class MarkdownBuilder implements md.NodeVisitor { /// Call when build an image widget. final MarkdownImageBuilder? imageBuilder; + /// Call when build an image widget. + final MarkdownSizedImageBuilder? sizedImageBuilder; + /// Call when build a checkbox widget. final MarkdownCheckboxBuilder? checkboxBuilder; @@ -635,9 +639,9 @@ class MarkdownBuilder implements md.NodeVisitor { } Widget child; - if (imageBuilder != null) { + if (imageBuilder != null || sizedImageBuilder != null) { final MarkdownImageConfig config = MarkdownImageConfig(uri: uri, alt: alt, title: title, height: height, width: width); - child = imageBuilder!(config); + child = sizedImageBuilder != null ? sizedImageBuilder!(config) : imageBuilder!(uri, alt, title); } else { child = kDefaultImageBuilder(uri, imageDirectory, width, height); } diff --git a/packages/flutter_markdown/lib/src/widget.dart b/packages/flutter_markdown/lib/src/widget.dart index b85c421f4f72..3ae7ebeb6aa2 100644 --- a/packages/flutter_markdown/lib/src/widget.dart +++ b/packages/flutter_markdown/lib/src/widget.dart @@ -32,10 +32,16 @@ typedef MarkdownOnSelectionChangedCallback = void Function( typedef MarkdownTapLinkCallback = void Function( String text, String? href, String title); +/// Signature for custom image widget. +/// +/// Used by [MarkdownWidget.sizedImageBuilder] +typedef MarkdownSizedImageBuilder = Widget Function(MarkdownImageConfig config); + /// Signature for custom image widget. /// /// Used by [MarkdownWidget.imageBuilder] -typedef MarkdownImageBuilder = Widget Function(MarkdownImageConfig config); +typedef MarkdownImageBuilder = Widget Function( + Uri uri, String? title, String? alt); /// Signature for custom checkbox widget. /// @@ -219,7 +225,8 @@ abstract class MarkdownWidget extends StatefulWidget { this.blockSyntaxes, this.inlineSyntaxes, this.extensionSet, - this.imageBuilder, + @Deprecated('Use sizedImageBuilder instead') this.imageBuilder, + this.sizedImageBuilder, this.checkboxBuilder, this.bulletBuilder, this.builders = const {}, @@ -277,8 +284,12 @@ abstract class MarkdownWidget extends StatefulWidget { final md.ExtensionSet? extensionSet; /// Call when build an image widget. + @Deprecated('Use sizedImageBuilder instead') final MarkdownImageBuilder? imageBuilder; + /// Call when build an image widget. + final MarkdownSizedImageBuilder? sizedImageBuilder; + /// Call when build a checkbox widget. final MarkdownCheckboxBuilder? checkboxBuilder; @@ -390,6 +401,7 @@ class _MarkdownWidgetState extends State styleSheet: styleSheet, imageDirectory: widget.imageDirectory, imageBuilder: widget.imageBuilder, + sizedImageBuilder: widget.sizedImageBuilder, checkboxBuilder: widget.checkboxBuilder, bulletBuilder: widget.bulletBuilder, builders: widget.builders, @@ -521,7 +533,8 @@ class Markdown extends MarkdownWidget { super.blockSyntaxes, super.inlineSyntaxes, super.extensionSet, - super.imageBuilder, + @Deprecated('Use sizedImageBuilder instead.') super.imageBuilder, + super.sizedImageBuilder, super.checkboxBuilder, super.bulletBuilder, super.builders, diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index 35b700338f5a..8ff7be504937 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -413,7 +413,7 @@ void defineTests() { 'custom image builder', (WidgetTester tester) async { const String data = '![alt](https://img.png)'; - Widget builder(MarkdownImageConfig config) => + Widget builder(Uri uri, String? title, String? alt) => Image.asset('assets/logo.png'); await tester.pumpWidget( @@ -479,7 +479,7 @@ void defineTests() { width: 500, child: Markdown( data: data, - imageBuilder: builder, + sizedImageBuilder: builder, ), ), ), From 15193ded240756a81765cfe19857392791a7d11b Mon Sep 17 00:00:00 2001 From: bixat4software Date: Sun, 22 Dec 2024 14:19:00 +0000 Subject: [PATCH 15/26] Updated MarkdownBody widget --- packages/flutter_markdown/lib/src/widget.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/flutter_markdown/lib/src/widget.dart b/packages/flutter_markdown/lib/src/widget.dart index 3ae7ebeb6aa2..6c0b05add63c 100644 --- a/packages/flutter_markdown/lib/src/widget.dart +++ b/packages/flutter_markdown/lib/src/widget.dart @@ -478,7 +478,8 @@ class MarkdownBody extends MarkdownWidget { super.blockSyntaxes, super.inlineSyntaxes, super.extensionSet, - super.imageBuilder, + @Deprecated('Use sizedImageBuilder instead.') super.imageBuilder, + super.sizedImageBuilder, super.checkboxBuilder, super.bulletBuilder, super.builders, From 8a6497e5af16b04266a4bf2bc6ecd57b3bc04b2b Mon Sep 17 00:00:00 2001 From: bixat4software Date: Mon, 10 Feb 2025 12:19:40 +0000 Subject: [PATCH 16/26] typo fix --- packages/flutter_markdown/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md index 746bbdf39764..268a6d8f5bc2 100644 --- a/packages/flutter_markdown/CHANGELOG.md +++ b/packages/flutter_markdown/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.8.0 -* Introduce `MarkdownImageConfig` for `sizedImageBuilder` builder. +* Introduces `MarkdownImageConfig` for `sizedImageBuilder` builder. ## 0.7.6+1 From 9f558c7c3c8da66e55e68c083ae2d6ff0d97bc63 Mon Sep 17 00:00:00 2001 From: bixat4software Date: Mon, 10 Feb 2025 12:22:26 +0000 Subject: [PATCH 17/26] format builder.dart --- packages/flutter_markdown/lib/src/builder.dart | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index f3731093363b..ac8fa918eb78 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -52,7 +52,6 @@ class _TableElement { /// Holds configuration data for an image in a Markdown document. class MarkdownImageConfig { - /// Creates a new [MarkdownImageConfig] instance. MarkdownImageConfig({ required this.uri, @@ -61,6 +60,7 @@ class MarkdownImageConfig { this.width, this.height, }); + /// The URI of the image. final Uri uri; @@ -651,8 +651,11 @@ class MarkdownBuilder implements md.NodeVisitor { Widget child; if (imageBuilder != null || sizedImageBuilder != null) { - final MarkdownImageConfig config = MarkdownImageConfig(uri: uri, alt: alt, title: title, height: height, width: width); - child = sizedImageBuilder != null ? sizedImageBuilder!(config) : imageBuilder!(uri, alt, title); + final MarkdownImageConfig config = MarkdownImageConfig( + uri: uri, alt: alt, title: title, height: height, width: width); + child = sizedImageBuilder != null + ? sizedImageBuilder!(config) + : imageBuilder!(uri, alt, title); } else { child = kDefaultImageBuilder(uri, imageDirectory, width, height); } From 3b80f5bf2f39412c931a1bef7a715894ef381ecb Mon Sep 17 00:00:00 2001 From: bixat4software Date: Mon, 10 Feb 2025 13:41:44 +0000 Subject: [PATCH 18/26] format tests --- packages/flutter_markdown/test/image_test.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index 0d16008b63a6..98408c4e1f51 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -459,7 +459,7 @@ void defineTests() { }, skip: kIsWeb, // Goldens are platform-specific. ); - + testWidgets( 'custom image builder test width and height', (WidgetTester tester) async { @@ -467,7 +467,8 @@ void defineTests() { const double width = 100; const String data = '![alt](https://img.png#${width}x$height)'; Widget builder(MarkdownImageConfig config) => - Image.asset('assets/logo.png', width: config.width, height: config.height); + Image.asset('assets/logo.png', + width: config.width, height: config.height); await tester.pumpWidget( boilerplate( From 86717f993db01d23d443ef3aa68f1d6a78e856eb Mon Sep 17 00:00:00 2001 From: bixat4software Date: Thu, 13 Feb 2025 20:41:03 +0000 Subject: [PATCH 19/26] Solved fail test --- packages/flutter_markdown/test/image_test.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/flutter_markdown/test/image_test.dart b/packages/flutter_markdown/test/image_test.dart index 98408c4e1f51..deef70dcc40b 100644 --- a/packages/flutter_markdown/test/image_test.dart +++ b/packages/flutter_markdown/test/image_test.dart @@ -510,6 +510,7 @@ void defineTests() { find.byType(Container), matchesGoldenFile( 'assets/images/golden/image_test/custom_image_builder_test.png')); + imageCache.clear(); }, skip: kIsWeb, ); From ef8b0461fd038f2909ec46bca0472117376f115f Mon Sep 17 00:00:00 2001 From: bixat4software Date: Sat, 15 Feb 2025 14:15:03 +0000 Subject: [PATCH 20/26] solve package version --- packages/flutter_markdown/CHANGELOG.md | 2 +- packages/flutter_markdown/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md index dc7aa625c1f1..3f64591880af 100644 --- a/packages/flutter_markdown/CHANGELOG.md +++ b/packages/flutter_markdown/CHANGELOG.md @@ -1,4 +1,4 @@ -## 0.8.0 +## 0.7.7 * Introduces `MarkdownImageConfig` for `sizedImageBuilder` builder. diff --git a/packages/flutter_markdown/pubspec.yaml b/packages/flutter_markdown/pubspec.yaml index f2b9320ae5ee..0a1a922ade33 100644 --- a/packages/flutter_markdown/pubspec.yaml +++ b/packages/flutter_markdown/pubspec.yaml @@ -4,7 +4,7 @@ description: A Markdown renderer for Flutter. Create rich text output, formatted with simple Markdown tags. repository: https://github.com/flutter/packages/tree/main/packages/flutter_markdown issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_markdown%22 -version: 0.8.0 +version: 0.7.7 environment: sdk: ^3.4.0 From 24b82979bac4e57e4aaba2a1341dfbb035597976 Mon Sep 17 00:00:00 2001 From: bixat4software Date: Tue, 18 Feb 2025 22:05:43 +0000 Subject: [PATCH 21/26] updated imageBuilder & sizedImageBuilder docs --- packages/flutter_markdown/lib/src/builder.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index ac8fa918eb78..1f89c9f3b736 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -1,3 +1,4 @@ +// Suggested code may be subject to a license. Learn more: ~LicenseLog:410293059. // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -159,10 +160,10 @@ class MarkdownBuilder implements md.NodeVisitor { /// The base directory holding images referenced by Img tags with local or network file paths. final String? imageDirectory; - /// Call when build an image widget. + /// Call when building an image widget when no sizing information is available. final MarkdownImageBuilder? imageBuilder; - /// Call when build an image widget. + /// Call when building an image widget with sizing information available. final MarkdownSizedImageBuilder? sizedImageBuilder; /// Call when build a checkbox widget. From e42ac4b99d9a6fc0a74866b22da29a9f3c54ae20 Mon Sep 17 00:00:00 2001 From: bixat4software Date: Tue, 18 Feb 2025 22:06:59 +0000 Subject: [PATCH 22/26] Improved _buildImage if statement --- packages/flutter_markdown/lib/src/builder.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index 1f89c9f3b736..480a7df8a582 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -1,3 +1,4 @@ +// Suggested code may be subject to a license. Learn more: ~LicenseLog:1053232416. // Suggested code may be subject to a license. Learn more: ~LicenseLog:410293059. // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be @@ -651,12 +652,12 @@ class MarkdownBuilder implements md.NodeVisitor { } Widget child; - if (imageBuilder != null || sizedImageBuilder != null) { + if (sizedImageBuilder != null) { final MarkdownImageConfig config = MarkdownImageConfig( uri: uri, alt: alt, title: title, height: height, width: width); - child = sizedImageBuilder != null - ? sizedImageBuilder!(config) - : imageBuilder!(uri, alt, title); + child = sizedImageBuilder!(config); + } else if (imageBuilder != null) { + child = imageBuilder!(uri, alt, title); } else { child = kDefaultImageBuilder(uri, imageDirectory, width, height); } From ed8db583f36fac16a8f26c249b8a9fa256673f2f Mon Sep 17 00:00:00 2001 From: bixat4software Date: Tue, 18 Feb 2025 22:09:18 +0000 Subject: [PATCH 23/26] Updated MarkdownSizedImageBuilder doc --- packages/flutter_markdown/lib/src/widget.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/flutter_markdown/lib/src/widget.dart b/packages/flutter_markdown/lib/src/widget.dart index 6c0b05add63c..5e40579df1a2 100644 --- a/packages/flutter_markdown/lib/src/widget.dart +++ b/packages/flutter_markdown/lib/src/widget.dart @@ -32,7 +32,7 @@ typedef MarkdownOnSelectionChangedCallback = void Function( typedef MarkdownTapLinkCallback = void Function( String text, String? href, String title); -/// Signature for custom image widget. +/// Signature for custom image builder. /// /// Used by [MarkdownWidget.sizedImageBuilder] typedef MarkdownSizedImageBuilder = Widget Function(MarkdownImageConfig config); From af00261919fd1d890b07d6dfcd22ca595cc109c2 Mon Sep 17 00:00:00 2001 From: bixat4software Date: Tue, 18 Feb 2025 22:15:13 +0000 Subject: [PATCH 24/26] Adds assert that both aren't passed. --- packages/flutter_markdown/lib/src/builder.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index 480a7df8a582..0abc6c0e85db 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -145,7 +145,13 @@ class MarkdownBuilder implements md.NodeVisitor { this.onSelectionChanged, this.onTapText, this.softLineBreak = false, - }); + }): + + // Check that only one of imageBuilder and sizedImageBuilder has a value. + // sizedImageBuilder takes precedence when both are provided, but it's + // better to not allow this configuration. + assert(imageBuilder == null || sizedImageBuilder == null, + 'Only one of imageBuilder or sizedImageBuilder may be specified.'); /// A delegate that controls how link and `pre` elements behave. final MarkdownBuilderDelegate delegate; From 99d08a951f337a1436dc595fc73f0a2daef99204 Mon Sep 17 00:00:00 2001 From: bixat4software Date: Tue, 18 Feb 2025 22:16:23 +0000 Subject: [PATCH 25/26] format codes --- packages/flutter_markdown/lib/src/builder.dart | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index 0abc6c0e85db..0f76e62b9271 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -145,13 +145,8 @@ class MarkdownBuilder implements md.NodeVisitor { this.onSelectionChanged, this.onTapText, this.softLineBreak = false, - }): - - // Check that only one of imageBuilder and sizedImageBuilder has a value. - // sizedImageBuilder takes precedence when both are provided, but it's - // better to not allow this configuration. - assert(imageBuilder == null || sizedImageBuilder == null, - 'Only one of imageBuilder or sizedImageBuilder may be specified.'); + }) : assert(imageBuilder == null || sizedImageBuilder == null, + 'Only one of imageBuilder or sizedImageBuilder may be specified.'); /// A delegate that controls how link and `pre` elements behave. final MarkdownBuilderDelegate delegate; From 4f02de01b0d05fe13119c6ba9c876208d57b4944 Mon Sep 17 00:00:00 2001 From: bixat4software Date: Wed, 19 Feb 2025 15:16:31 +0000 Subject: [PATCH 26/26] removed license comment --- packages/flutter_markdown/lib/src/builder.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index 0f76e62b9271..f0dfed9a9db4 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -1,5 +1,3 @@ -// Suggested code may be subject to a license. Learn more: ~LicenseLog:1053232416. -// Suggested code may be subject to a license. Learn more: ~LicenseLog:410293059. // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file.