made YearSearchWidget() for search result suggestion
This commit is contained in:
parent
50c39dc768
commit
753bba3eed
|
@ -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,
|
||||
// ),
|
||||
// );
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
|
@ -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");
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue