From 84ec8304cd28fea0ceb697e07c28627e1c64a4a6 Mon Sep 17 00:00:00 2001 From: Mguy13 Date: Sun, 25 Dec 2022 22:17:59 +0100 Subject: [PATCH] refactoring --- .../gallery/downloaded_gallery_view.dart | 30 +++++------------ .../home/views/gallery/gallery_view.dart | 33 ++++++++++--------- .../views/gallery/search_gallery_view.dart | 14 ++------ lib/features/home/widgets/custom_wrap.dart | 22 +++++++++++++ 4 files changed, 51 insertions(+), 48 deletions(-) create mode 100644 lib/features/home/widgets/custom_wrap.dart diff --git a/lib/features/home/views/gallery/downloaded_gallery_view.dart b/lib/features/home/views/gallery/downloaded_gallery_view.dart index 4247391..4c5df38 100644 --- a/lib/features/home/views/gallery/downloaded_gallery_view.dart +++ b/lib/features/home/views/gallery/downloaded_gallery_view.dart @@ -18,27 +18,15 @@ class _DownloadedGalleryView extends StatelessWidget { child: ValueListenableBuilder( valueListenable: galleryViewModel.isViewingFavouriteListenable, builder: (context, final isViewingFavourites, _) => !isViewingFavourites - ? Wrap( - runSpacing: 24, - spacing: 8, - alignment: WrapAlignment.center, - runAlignment: WrapAlignment.center, - crossAxisAlignment: WrapCrossAlignment.center, - children: [ - for (final imageModel in galleryViewModel.imageModels) - _StarrableImage( - key: ValueKey(imageModel.imageIndex), - imageModel: imageModel, - galleryViewModel: galleryViewModel, - ), - ], - ) - : Wrap( - runSpacing: 24, - spacing: 8, - alignment: WrapAlignment.center, - runAlignment: WrapAlignment.center, - crossAxisAlignment: WrapCrossAlignment.center, + ? CustomWrap(children: [ + for (final imageModel in galleryViewModel.imageModels) + _StarrableImage( + key: ValueKey(imageModel.imageIndex), + imageModel: imageModel, + galleryViewModel: galleryViewModel, + ), + ]) + : CustomWrap( children: [ for (final favouriteImageModel in galleryViewModel.favouriteImageModels) _StarrableImage( diff --git a/lib/features/home/views/gallery/gallery_view.dart b/lib/features/home/views/gallery/gallery_view.dart index 211fba5..e732622 100644 --- a/lib/features/home/views/gallery/gallery_view.dart +++ b/lib/features/home/views/gallery/gallery_view.dart @@ -1,6 +1,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:mc_gallery/features/core/data/constants/const_media.dart'; +import 'package:mc_gallery/features/home/widgets/custom_wrap.dart'; import '/features/core/data/constants/const_colors.dart'; import '/features/core/data/constants/const_durations.dart'; @@ -81,21 +82,23 @@ class GalleryView extends StatelessWidget { valueListenable: model.isSearchingListenable, builder: (context, final isSearching, _) => AnimatedSwitcher( duration: ConstDurations.oneAndHalfDefaultAnimationDuration, - child: Column( - children: [ - ValueListenableBuilder( - valueListenable: model.isViewingFavouriteListenable, - builder: (context, final isViewingFavourites, child) => - Switch( - value: isViewingFavourites, - onChanged: model.onFavouriteViewChange, - ), - ), - !isSearching - ? _DownloadedGalleryView(galleryViewModel: model) - : _SearchGalleryView(galleryViewModel: model), - ], - ), + child: !isSearching + ? Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + ValueListenableBuilder( + valueListenable: model.isViewingFavouriteListenable, + builder: + (context, final isViewingFavourites, child) => + Switch( + value: isViewingFavourites, + onChanged: model.onFavouriteViewChange, + ), + ), + _DownloadedGalleryView(galleryViewModel: model), + ], + ) + : _SearchGalleryView(galleryViewModel: model), ), ); } diff --git a/lib/features/home/views/gallery/search_gallery_view.dart b/lib/features/home/views/gallery/search_gallery_view.dart index 7ec68b3..87b8df7 100644 --- a/lib/features/home/views/gallery/search_gallery_view.dart +++ b/lib/features/home/views/gallery/search_gallery_view.dart @@ -29,12 +29,7 @@ class _SearchGalleryView extends StatelessWidget { builder: (context, final searchOption, child) { switch (searchOption) { case SearchOption.local: - return Wrap( - runSpacing: 24, - spacing: 8, - alignment: WrapAlignment.center, - runAlignment: WrapAlignment.center, - crossAxisAlignment: WrapCrossAlignment.center, + return CustomWrap( children: [ for (final resultsImageModel in resultsImageModels) CachedNetworkImage( @@ -48,12 +43,7 @@ class _SearchGalleryView extends StatelessWidget { ], ); case SearchOption.web: - return Wrap( - runSpacing: 24, - spacing: 8, - alignment: WrapAlignment.center, - runAlignment: WrapAlignment.center, - crossAxisAlignment: WrapCrossAlignment.center, + return CustomWrap( children: [ for (final imageResult in resultsImageModels) Image.network( diff --git a/lib/features/home/widgets/custom_wrap.dart b/lib/features/home/widgets/custom_wrap.dart new file mode 100644 index 0000000..c843143 --- /dev/null +++ b/lib/features/home/widgets/custom_wrap.dart @@ -0,0 +1,22 @@ +import 'package:flutter/widgets.dart'; + +class CustomWrap extends StatelessWidget { + const CustomWrap({ + required this.children, + super.key, + }); + + final List children; + + @override + Widget build(BuildContext context) { + return Wrap( + runSpacing: 24, + spacing: 8, + alignment: WrapAlignment.center, + runAlignment: WrapAlignment.center, + crossAxisAlignment: WrapCrossAlignment.center, + children: children, + ); + } +}