From ff35f07094114f0a2eff30a62f5d44acc008f8ed Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Thu, 11 Aug 2022 19:45:54 +0530 Subject: [PATCH] Extract search result thumbnail to a separate widget --- .../collection_result_widget.dart | 25 +++++---------- .../filename_result_widget.dart | 20 +++++------- .../location_result_widget.dart | 20 +++++------- .../search_result_thumbnail_widget.dart | 31 +++++++++++++++++++ 4 files changed, 53 insertions(+), 43 deletions(-) create mode 100644 lib/ui/viewer/search/search_result_widgets/search_result_thumbnail_widget.dart diff --git a/lib/ui/viewer/search/search_result_widgets/collection_result_widget.dart b/lib/ui/viewer/search/search_result_widgets/collection_result_widget.dart index 34e202b80..8d000a0ee 100644 --- a/lib/ui/viewer/search/search_result_widgets/collection_result_widget.dart +++ b/lib/ui/viewer/search/search_result_widgets/collection_result_widget.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:photos/db/files_db.dart'; import 'package:photos/ente_theme_data.dart'; import 'package:photos/models/search/album_search_result.dart'; -import 'package:photos/ui/viewer/file/thumbnail_widget.dart'; import 'package:photos/ui/viewer/gallery/collection_page.dart'; +import 'package:photos/ui/viewer/search/search_result_widgets/search_result_thumbnail_widget.dart'; import 'package:photos/utils/navigation_util.dart'; class AlbumSearchResultWidget extends StatelessWidget { @@ -21,9 +21,14 @@ class AlbumSearchResultWidget extends StatelessWidget { child: Padding( padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 12), child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ + SearchResultThumbnailWidget( + albumSearchResult.collectionWithThumbnail.thumbnail, + "collection_search", + ), + const SizedBox(width: 16), Flexible( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -35,7 +40,7 @@ class AlbumSearchResultWidget extends StatelessWidget { color: Theme.of(context).colorScheme.subTextColor, ), ), - const SizedBox(height: 6), + const SizedBox(height: 4), Text( albumSearchResult.collectionWithThumbnail.collection.name, style: const TextStyle(fontSize: 18), @@ -74,20 +79,6 @@ class AlbumSearchResultWidget extends StatelessWidget { ], ), ), - Hero( - tag: "collection_search" + - albumSearchResult.collectionWithThumbnail.thumbnail.tag(), - child: SizedBox( - height: 50, - width: 50, - child: ClipRRect( - borderRadius: BorderRadius.circular(3), - child: ThumbnailWidget( - albumSearchResult.collectionWithThumbnail.thumbnail, - ), - ), - ), - ) ], ), ), diff --git a/lib/ui/viewer/search/search_result_widgets/filename_result_widget.dart b/lib/ui/viewer/search/search_result_widgets/filename_result_widget.dart index ecb16b84a..cf0e342eb 100644 --- a/lib/ui/viewer/search/search_result_widgets/filename_result_widget.dart +++ b/lib/ui/viewer/search/search_result_widgets/filename_result_widget.dart @@ -3,7 +3,7 @@ import 'package:photos/ente_theme_data.dart'; import 'package:photos/models/file.dart'; import 'package:photos/models/search/file_search_result.dart'; import 'package:photos/ui/viewer/file/detail_page.dart'; -import 'package:photos/ui/viewer/file/thumbnail_widget.dart'; +import 'package:photos/ui/viewer/search/search_result_widgets/search_result_thumbnail_widget.dart'; import 'package:photos/utils/navigation_util.dart'; class FileSearchResultWidget extends StatelessWidget { @@ -19,9 +19,14 @@ class FileSearchResultWidget extends StatelessWidget { child: Padding( padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 12), child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ + SearchResultThumbnailWidget( + matchedFile.file, + "file_details", + ), + const SizedBox(width: 12), Flexible( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -42,17 +47,6 @@ class FileSearchResultWidget extends StatelessWidget { ], ), ), - Hero( - tag: "file_details" + matchedFile.file.tag(), - child: SizedBox( - height: 50, - width: 50, - child: ClipRRect( - borderRadius: BorderRadius.circular(3), - child: ThumbnailWidget(matchedFile.file), - ), - ), - ), ], ), ), diff --git a/lib/ui/viewer/search/search_result_widgets/location_result_widget.dart b/lib/ui/viewer/search/search_result_widgets/location_result_widget.dart index 13f2a4f25..49e36214d 100644 --- a/lib/ui/viewer/search/search_result_widgets/location_result_widget.dart +++ b/lib/ui/viewer/search/search_result_widgets/location_result_widget.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:photos/ente_theme_data.dart'; import 'package:photos/models/search/location_search_result.dart'; -import 'package:photos/ui/viewer/file/thumbnail_widget.dart'; import 'package:photos/ui/viewer/search/collections/files_in_location_page.dart'; +import 'package:photos/ui/viewer/search/search_result_widgets/search_result_thumbnail_widget.dart'; import 'package:photos/utils/navigation_util.dart'; class LocationSearchResultWidget extends StatelessWidget { @@ -24,9 +24,14 @@ class LocationSearchResultWidget extends StatelessWidget { child: Padding( padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 12), child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ + SearchResultThumbnailWidget( + locationSearchResult.files[0], + heroTagPrefix, + ), + const SizedBox(width: 12), Flexible( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -63,17 +68,6 @@ class LocationSearchResultWidget extends StatelessWidget { ], ), ), - Hero( - tag: heroTagPrefix + locationSearchResult.files[0].tag(), - child: SizedBox( - height: 50, - width: 50, - child: ClipRRect( - borderRadius: BorderRadius.circular(3), - child: ThumbnailWidget(locationSearchResult.files[0]), - ), - ), - ), ], ), ), diff --git a/lib/ui/viewer/search/search_result_widgets/search_result_thumbnail_widget.dart b/lib/ui/viewer/search/search_result_widgets/search_result_thumbnail_widget.dart new file mode 100644 index 000000000..bbbc6cf1a --- /dev/null +++ b/lib/ui/viewer/search/search_result_widgets/search_result_thumbnail_widget.dart @@ -0,0 +1,31 @@ +import 'package:flutter/widgets.dart'; +import 'package:photos/models/file.dart'; +import 'package:photos/ui/viewer/file/thumbnail_widget.dart'; + +class SearchResultThumbnailWidget extends StatelessWidget { + final File file; + final String tagPrefix; + + const SearchResultThumbnailWidget( + this.file, + this.tagPrefix, { + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Hero( + tag: tagPrefix + file.tag(), + child: SizedBox( + height: 58, + width: 58, + child: ClipRRect( + borderRadius: BorderRadius.circular(3), + child: ThumbnailWidget( + file, + ), + ), + ), + ); + } +}