diff --git a/lib/features/home/views/image_carousel/image_carousel_view.dart b/lib/features/home/views/image_carousel/image_carousel_view.dart index 185e7d1..d2563ce 100644 --- a/lib/features/home/views/image_carousel/image_carousel_view.dart +++ b/lib/features/home/views/image_carousel/image_carousel_view.dart @@ -46,6 +46,7 @@ class ImageCarouselView extends StatelessWidget { surfaceTintColor: ConstColours.transparent, child: CarouselSlider.builder( itemCount: model.numberOfImages, + carouselController: model.carouselController, options: CarouselOptions( enlargeFactor: 1, enlargeCenterPage: true, @@ -79,19 +80,26 @@ class ImageCarouselView extends StatelessWidget { builder: (context, _, __) => Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Icon( - Icons.chevron_left, - color: model.hasPreviousImage - ? ConstColours.white - : ConstColours.black, + IconButton( + icon: Icon( + Icons.chevron_left, + color: model.hasPreviousImage + ? ConstColours.white + : ConstColours.black, + ), + onPressed: model.onPreviousPressed, ), AutoSizeText( model.currentImageName, style: ConstText.imageOverlayTextStyle(context), ), - Icon( - Icons.chevron_right, - color: model.hasNextImage ? ConstColours.white : ConstColours.black, + IconButton( + icon: Icon( + Icons.chevron_right, + color: + model.hasNextImage ? ConstColours.white : ConstColours.black, + ), + onPressed: model.onNextPressed, ), ], ), diff --git a/lib/features/home/views/image_carousel/image_carousel_view_model.dart b/lib/features/home/views/image_carousel/image_carousel_view_model.dart index 85f4f1b..8d0f777 100644 --- a/lib/features/home/views/image_carousel/image_carousel_view_model.dart +++ b/lib/features/home/views/image_carousel/image_carousel_view_model.dart @@ -1,3 +1,4 @@ +import 'package:carousel_slider/carousel_controller.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:mc_gallery/features/home/views/image_carousel/image_carousel_view.dart'; @@ -17,6 +18,8 @@ class ImageCarouselViewModel extends BaseViewModel { late final ValueNotifier _currentImageModelNotifier; ValueListenable get currentImageModelListenable => _currentImageModelNotifier; + final CarouselController carouselController = CarouselController(); + @override Future initialise(bool Function() mounted, [arguments]) async { _currentImageModelNotifier = ValueNotifier(_imagesService.imageModels @@ -36,6 +39,10 @@ class ImageCarouselViewModel extends BaseViewModel { log.info('Swiped to image: ${_currentImageModelNotifier.value.imageIndex}'); } + void onPreviousPressed() => carouselController.previousPage(); + + void onNextPressed() => carouselController.nextPage(); + String get currentImageUrl => currentImageModelListenable.value.uri.toString(); String get currentImageKey => currentImageModelListenable.value.imageIndex.toString(); String get currentImageName => currentImageModelListenable.value.imageName;