import 'package:flutter/material.dart'; import '../../../routing/app_routes.dart'; import '../../../state/app/modules/marianum_message/bloc/marianum_message_state.dart'; import '../../../widget/placeholder_view.dart'; class SearchMarianumMessages extends SearchDelegate { final String base; final List messages; SearchMarianumMessages({required this.base, required this.messages}); List _matches() { final q = query.trim().toLowerCase(); if (q.isEmpty) return messages; return messages.where((m) { return m.name.toLowerCase().contains(q) || m.date.toLowerCase().contains(q); }).toList(); } @override List? buildActions(BuildContext context) => [ if (query.isNotEmpty) IconButton(onPressed: () => query = '', icon: const Icon(Icons.delete)), ]; @override Widget? buildLeading(BuildContext context) => IconButton( icon: const Icon(Icons.arrow_back), onPressed: () => close(context, null), ); @override Widget buildResults(BuildContext context) { final matches = _matches(); if (matches.isEmpty) { return const PlaceholderView( icon: Icons.search_off_outlined, text: 'Keine Treffer', ); } return ListView.builder( itemCount: matches.length, itemBuilder: (_, i) { final message = matches[i]; return ListTile( leading: const Column( mainAxisAlignment: MainAxisAlignment.center, children: [Icon(Icons.newspaper)], ), title: Text(message.name, overflow: TextOverflow.ellipsis), subtitle: Text('vom ${message.date}'), trailing: const Icon(Icons.arrow_right), onTap: () { close(context, message); AppRoutes.openMarianumMessage(context, base, message); }, ); }, ); } @override Widget buildSuggestions(BuildContext context) => buildResults(context); }