diff --git a/lib/model/filters/query.dart b/lib/model/filters/query.dart index 04bb864ee..7d50a8e51 100644 --- a/lib/model/filters/query.dart +++ b/lib/model/filters/query.dart @@ -1,6 +1,8 @@ import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/image_entry.dart'; import 'package:aves/widgets/common/icons.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; class QueryFilter extends CollectionFilter { @@ -9,9 +11,10 @@ class QueryFilter extends CollectionFilter { static final exactRegex = RegExp('^"(.*)"\$'); final String query; + final bool colorful; bool Function(ImageEntry) _filter; - QueryFilter(this.query) { + QueryFilter(this.query, {this.colorful = true}) { var upQuery = query.toUpperCase(); // allow NOT queries starting with `-` @@ -41,6 +44,9 @@ class QueryFilter extends CollectionFilter { @override Widget iconBuilder(context, size) => Icon(AIcons.text, size: size); + @override + Future color(BuildContext context) => colorful ? super.color(context) : SynchronousFuture(Colors.white); + @override String get typeKey => type; diff --git a/lib/widgets/album/search/search_delegate.dart b/lib/widgets/album/search/search_delegate.dart index 288d56908..c53d7f4c0 100644 --- a/lib/widgets/album/search/search_delegate.dart +++ b/lib/widgets/album/search/search_delegate.dart @@ -64,12 +64,13 @@ class ImageSearchDelegate extends SearchDelegate { _buildFilterRow( context: context, filters: [ + _buildQueryFilter(false), FavouriteFilter(), MimeFilter(MimeTypes.ANY_IMAGE), MimeFilter(MimeTypes.ANY_VIDEO), MimeFilter(MimeFilter.animated), MimeFilter(MimeTypes.SVG), - ].where((f) => containQuery(f.label)), + ].where((f) => f != null && containQuery(f.label)), ), StreamBuilder( stream: source.eventBus.on(), @@ -118,19 +119,23 @@ class ImageSearchDelegate extends SearchDelegate { title: title, filters: filters, expandedNotifier: expandedSectionNotifier, - onPressed: (filter) => close(context, filter), + onPressed: (filter) => close(context, filter is QueryFilter ? QueryFilter(filter.query) : filter), ); } @override Widget buildResults(BuildContext context) { - final cleanQuery = query.trim(); WidgetsBinding.instance.addPostFrameCallback((_) { // `buildResults` is called in the build phase, // so we post the call that will filter the collection // and possibly trigger a rebuild here - close(context, cleanQuery.isNotEmpty ? QueryFilter(cleanQuery) : null); + close(context, _buildQueryFilter(true)); }); return const SizedBox.shrink(); } + + QueryFilter _buildQueryFilter(bool colorful) { + final cleanQuery = query.trim(); + return cleanQuery.isNotEmpty ? QueryFilter(cleanQuery, colorful: colorful) : null; + } }