From ca987a33e2396ac775d8bba51a29f5197969c21d Mon Sep 17 00:00:00 2001 From: Johannes Fahrenkrug Date: Wed, 13 Dec 2023 14:23:44 +0100 Subject: [PATCH] Revert breaking constructor change introduced in 1.3.0 Revert breaking constructor change introduced in 1.3.0. This changes the default `EasyImageView` constructor back to accepting an `ImageProvider` instead of a `Widget`. Constructing an `EasyImageView` with a widget can be done by using a new named constructor: `EasyImageView.imageWidget`. Thank you to @wferem1 for reporting this. --- CHANGELOG.md | 4 ++++ example/lib/main.dart | 8 +++++++- lib/src/easy_image_view.dart | 21 +++++++++++---------- lib/src/easy_image_view_pager.dart | 5 ++--- pubspec.yaml | 2 +- test/easy_image_view_test.dart | 18 +++++++++--------- 6 files changed, 34 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2733862..e27e6d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # EasyImageViewer Changelog +## 1.3.1 + +- Revert breaking constructor change introduced in 1.3.0. This changes the default `EasyImageView` constructor back to accepting an `ImageProvider` instead of a `Widget`. Constructing an `EasyImageView` with a widget can be done by using a new named constructor: `EasyImageView.imageWidget`. + ## 1.3.0 - Update Flutter to `3.16.3` diff --git a/example/lib/main.dart b/example/lib/main.dart index 2f3becb..760a025 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -114,9 +114,15 @@ class _MyHomePageState extends State { ); showImageViewerPager(context, customImageProvider); }), + SizedBox( // Tiny image just to test the EasyImageView constructor + width: MediaQuery.of(context).size.width, + height: 56, + child: EasyImageView( + imageProvider: Image.network("https://picsum.photos/id/1001/4912/3264").image) + ), SizedBox( width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height / 2.0, + height: MediaQuery.of(context).size.height / 2.4, child: EasyImageViewPager( easyImageProvider: _easyEmbeddedImageProvider, pageController: _pageController), diff --git a/lib/src/easy_image_view.dart b/lib/src/easy_image_view.dart index 868672f..db504c1 100644 --- a/lib/src/easy_image_view.dart +++ b/lib/src/easy_image_view.dart @@ -19,15 +19,16 @@ class EasyImageView extends StatefulWidget { final void Function(double)? onScaleChanged; /// Create a new instance that accepts an [ImageProvider] - EasyImageView.provider(ImageProvider imageProvider, - {Key? key, - double minScale = 1.0, - double maxScale = 5.0, - bool doubleTapZoomable = false, - void Function(double)? onScaleChanged}) - : this( + EasyImageView({ + Key? key, + required ImageProvider imageProvider, + double minScale = 1.0, + double maxScale = 5.0, + bool doubleTapZoomable = false, + void Function(double)? onScaleChanged, + }) : this.imageWidget( + Image(image: imageProvider), key: key, - imageWidget: Image(image: imageProvider), minScale: minScale, maxScale: maxScale, doubleTapZoomable: doubleTapZoomable, @@ -36,9 +37,9 @@ class EasyImageView extends StatefulWidget { /// Create a new instance /// The optional [doubleTapZoomable] boolean defaults to false and allows double tap to zoom. - const EasyImageView({ + const EasyImageView.imageWidget( + this.imageWidget, { Key? key, - required this.imageWidget, this.minScale = 1.0, this.maxScale = 5.0, this.doubleTapZoomable = false, diff --git a/lib/src/easy_image_view_pager.dart b/lib/src/easy_image_view_pager.dart index 49c03eb..b3d9478 100644 --- a/lib/src/easy_image_view_pager.dart +++ b/lib/src/easy_image_view_pager.dart @@ -51,10 +51,9 @@ class _EasyImageViewPagerState extends State { controller: widget.pageController, scrollBehavior: MouseEnabledScrollBehavior(), itemBuilder: (context, index) { - return EasyImageView( + return EasyImageView.imageWidget( + widget.easyImageProvider.imageWidgetBuilder(context, index), key: Key('easy_image_view_$index'), - imageWidget: - widget.easyImageProvider.imageWidgetBuilder(context, index), doubleTapZoomable: widget.doubleTapZoomable, onScaleChanged: (scale) { if (widget.onScaleChanged != null) { diff --git a/pubspec.yaml b/pubspec.yaml index 48ce09b..72f80aa 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: easy_image_viewer description: An easy image viewer with pinch & zoom, multi image, and built-in full-screen dialog support. -version: 1.3.0 +version: 1.3.1 homepage: https://github.com/thesmythgroup/easy_image_viewer environment: diff --git a/test/easy_image_view_test.dart b/test/easy_image_view_test.dart index 6cf4074..8122ad8 100644 --- a/test/easy_image_view_test.dart +++ b/test/easy_image_view_test.dart @@ -22,8 +22,8 @@ void main() { Widget testWidget = MediaQuery( data: const MediaQueryData(size: Size(600, 800)), - child: EasyImageView.provider( - imageProvider!, minScale: 0.5, maxScale: 6.0)); + child: EasyImageView( + imageProvider: imageProvider!, minScale: 0.5, maxScale: 6.0)); await tester.pumpWidget(testWidget); @@ -61,8 +61,8 @@ void main() { Widget testWidget = MediaQuery( data: const MediaQueryData(size: Size(600, 800)), - child: EasyImageView.provider( - imageProvider!, + child: EasyImageView( + imageProvider: imageProvider!, minScale: 0.5, maxScale: 6.0, onScaleChanged: (scale) { @@ -110,8 +110,8 @@ void main() { Widget testWidget = MediaQuery( data: const MediaQueryData(size: Size(600, 800)), - child: EasyImageView.provider( - imageProvider!, + child: EasyImageView( + imageProvider: imageProvider!, minScale: 0.5, maxScale: 6.0, doubleTapZoomable: true, @@ -163,8 +163,8 @@ void main() { Widget testWidget = MediaQuery( data: const MediaQueryData(size: Size(600, 800)), - child: EasyImageView.provider( - imageProvider!, + child: EasyImageView( + imageProvider: imageProvider!, minScale: 0.5, maxScale: 6.0, doubleTapZoomable: true, @@ -214,7 +214,7 @@ void main() { data: const MediaQueryData(size: Size(600, 800)), child: Directionality( textDirection: TextDirection.ltr, - child: EasyImageView(imageWidget: provider.imageWidgetBuilder(context, 0)))); + child: EasyImageView.imageWidget(provider.imageWidgetBuilder(context, 0)))); await tester.pumpWidget(testWidget);