made YearSearchWidget() for search result suggestion

This commit is contained in:
ashilkn 2022-08-11 19:15:35 +05:30
parent 50c39dc768
commit 753bba3eed
3 changed files with 88 additions and 8 deletions

View file

@ -0,0 +1,75 @@
import 'package:flutter/material.dart';
import 'package:photos/ente_theme_data.dart';
import 'package:photos/models/search/year_search_result.dart';
import 'package:photos/ui/viewer/file/thumbnail_widget.dart';
class YearSearchResultWidget extends StatelessWidget {
final YearSearchResult yearSearchResult;
const YearSearchResultWidget(this.yearSearchResult, {Key key})
: super(key: key);
@override
Widget build(BuildContext context) {
final noOfMemories = yearSearchResult.files.length;
return GestureDetector(
behavior: HitTestBehavior.opaque,
child: Container(
color: Theme.of(context).colorScheme.searchResultsColor,
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 12),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Flexible(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
'Year',
style: TextStyle(fontSize: 12),
),
const SizedBox(height: 8),
Text(
yearSearchResult.year.toString(),
style: const TextStyle(fontSize: 18),
overflow: TextOverflow.ellipsis,
),
RichText(
text: TextSpan(
style: TextStyle(
color: Theme.of(context).colorScheme.defaultTextColor,
),
children: [
TextSpan(text: noOfMemories.toString()),
TextSpan(
text: noOfMemories != 1 ? ' memories' : ' memory',
),
],
),
),
],
),
),
Hero(
tag: "year_search" + yearSearchResult.files[0].tag(),
child: SizedBox(
height: 50,
width: 50,
child: ThumbnailWidget(yearSearchResult.files[0]),
),
),
],
),
),
),
onTap: () {
// routeToPage(
// context,
// FilesInLocationPage(
// yearSearchResult: yearSearchResult,
// ),
// );
},
);
}
}

View file

@ -5,9 +5,11 @@ import 'package:photos/models/search/album_search_result.dart';
import 'package:photos/models/search/file_search_result.dart';
import 'package:photos/models/search/location_search_result.dart';
import 'package:photos/models/search/search_results.dart';
import 'package:photos/models/search/year_search_result.dart';
import 'package:photos/ui/viewer/search/search_result_widgets/collection_result_widget.dart';
import 'package:photos/ui/viewer/search/search_result_widgets/file_result_widget.dart';
import 'package:photos/ui/viewer/search/search_result_widgets/location_result_widget.dart';
import 'package:photos/ui/viewer/search/search_result_widgets/year_result_widget.dart';
class SearchSuggestionsWidget extends StatelessWidget {
final List<SearchResult> results;
@ -55,6 +57,8 @@ class SearchSuggestionsWidget extends StatelessWidget {
return LocationSearchResultWidget(result);
} else if (result is FileSearchResult) {
return FileSearchResultWidget(result);
} else if (result is YearSearchResult) {
return YearSearchResultWidget(result);
} else {
Logger('SearchSuggestionsWidget')
.info("Invalid/Unsupported value");

View file

@ -136,6 +136,15 @@ class _SearchWidgetState extends State<SearchWidget> {
Future<List<SearchResult>> getSearchResultsForQuery(String query) async {
final List<SearchResult> allResults = [];
final queryAsInt = int.tryParse(query);
if (isYearValid(queryAsInt)) {
final yearResults =
await SearchService.instance.getYearSearchResults(queryAsInt);
if (yearResults.isNotEmpty) {
allResults.add(YearSearchResult(queryAsInt, yearResults));
}
}
final collectionResults =
await SearchService.instance.getCollectionSearchResults(query);
for (CollectionWithThumbnail collectionResult in collectionResults) {
@ -154,14 +163,6 @@ class _SearchWidgetState extends State<SearchWidget> {
allResults.add(FileSearchResult(file));
}
final queryAsInt = int.tryParse(query);
if (isYearValid(queryAsInt)) {
final yearResults =
await SearchService.instance.getYearSearchResults(queryAsInt);
if (yearResults.isNotEmpty) {
allResults.add(YearSearchResult(queryAsInt, yearResults));
}
}
return allResults;
}