Add provider tag suggestions and tag categories

This commit is contained in:
2026-05-23 15:41:23 +03:00
parent 1b763c4d62
commit b02c776628
30 changed files with 1119 additions and 77 deletions
@@ -17,11 +17,12 @@ class SearchController extends AsyncNotifier<SearchState> {
Future<void> updateQuery(String query) async {
final lastToken =
query.trim().isEmpty ? '' : query.trim().split(RegExp(r'\s+')).last;
final suggestionsResult =
await ref.read(searchServiceProvider).autocomplete(lastToken);
final suggestions = suggestionsResult is Success<List<String>>
final suggestionsResult = await ref
.read(searchServiceProvider)
.autocompleteDetailed(lastToken, limit: 16);
final suggestions = suggestionsResult is Success<List<TagSuggestion>>
? suggestionsResult.data
: <String>[];
: <TagSuggestion>[];
state = AsyncData(
(state.value ?? const SearchState()).copyWith(
query: query,
@@ -8,12 +8,12 @@ class SearchState {
});
final List<SearchHistory> recent;
final List<String> suggestions;
final List<TagSuggestion> suggestions;
final String query;
SearchState copyWith({
List<SearchHistory>? recent,
List<String>? suggestions,
List<TagSuggestion>? suggestions,
String? query,
}) {
return SearchState(
@@ -1,10 +1,12 @@
import 'package:flutter/material.dart';
import '../../../../backend/backend.dart';
class SearchSuggestions extends StatelessWidget {
const SearchSuggestions(
{required this.suggestions, required this.onTap, super.key});
final List<String> suggestions;
final List<TagSuggestion> suggestions;
final ValueChanged<String> onTap;
@override
@@ -16,8 +18,8 @@ class SearchSuggestions extends StatelessWidget {
children: [
for (final suggestion in suggestions)
ActionChip(
label: Text(suggestion),
onPressed: () => onTap(suggestion),
label: Text('${suggestion.name} · ${suggestion.categoryLabel}'),
onPressed: () => onTap(suggestion.name),
),
],
);