From b50afd203a2122b72fbae8fecd2b4fad03f599f7 Mon Sep 17 00:00:00 2001 From: Nuntipat Narkthong Date: Sun, 12 May 2024 11:23:12 -0400 Subject: [PATCH] Add a callback when the user changes the current image --- lib/gallery_image_view_wrapper.dart | 16 ++++++++++------ lib/galleryimage.dart | 3 +++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/gallery_image_view_wrapper.dart b/lib/gallery_image_view_wrapper.dart index 0f5360a..ddccd8c 100644 --- a/lib/gallery_image_view_wrapper.dart +++ b/lib/gallery_image_view_wrapper.dart @@ -7,6 +7,7 @@ import 'gallery_item_model.dart'; class GalleryImageViewWrapper extends StatefulWidget { final Color? backgroundColor; final int? initialIndex; + final void Function(int)? onPageChanged; final List galleryItems; final String? titleGallery; final Widget? loadingWidget; @@ -25,6 +26,7 @@ class GalleryImageViewWrapper extends StatefulWidget { required this.titleGallery, required this.backgroundColor, required this.initialIndex, + required this.onPageChanged, required this.galleryItems, required this.loadingWidget, required this.errorWidget, @@ -51,12 +53,8 @@ class _GalleryImageViewWrapperState extends State { @override void initState() { - _currentPage = 0; - _controller.addListener(() { - setState(() { - _currentPage = _controller.page?.toInt() ?? 0; - }); - }); + _currentPage = widget.initialIndex ?? 0; + widget.onPageChanged?.call(_currentPage); super.initState(); } @@ -101,6 +99,12 @@ class _GalleryImageViewWrapperState extends State { itemCount: widget.galleryItems.length, itemBuilder: (context, index) => _buildImage(widget.galleryItems[index]), + onPageChanged: (index) { + widget.onPageChanged?.call(index); + setState(() { + _currentPage = index; + }); + }, ), ), ), diff --git a/lib/galleryimage.dart b/lib/galleryimage.dart index 7c8c3c2..8315b7e 100644 --- a/lib/galleryimage.dart +++ b/lib/galleryimage.dart @@ -9,6 +9,7 @@ import './util.dart'; class GalleryImage extends StatefulWidget { final List imageUrls; + final void Function(int)? onPageChanged; final String? titleGallery; final int numOfShowImages; final int crossAxisCount; @@ -33,6 +34,7 @@ class GalleryImage extends StatefulWidget { const GalleryImage({ Key? key, required this.imageUrls, + this.onPageChanged, this.titleGallery, this.childAspectRatio = 1, this.crossAxisCount = 3, @@ -150,6 +152,7 @@ class _GalleryImageState extends State { galleryItems: galleryItems, backgroundColor: widget.galleryBackgroundColor, initialIndex: indexOfImage, + onPageChanged: widget.onPageChanged, loadingWidget: widget.loadingWidget, errorWidget: widget.errorWidget, maxScale: widget.maxScale,