import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../model/bookmark.dart'; import '../../service/notifying.dart'; import '../../service/search_provider.dart'; import '../../service/storage.dart' show Storage; import '../../service/url_launcher.dart'; class SearchResultsWidget extends StatefulWidget { const SearchResultsWidget({super.key}); @override State createState() => _SearchResultsWidgetState(); } class _SearchResultsWidgetState extends State { final List allBookmarks = Storage.loadBookmarks(); Widget bookmarkListItemBuilder(BuildContext context, int index) { final bookmark = filteredBookmarks.elementAt(index); return ListTile( title: Text(bookmark.name), onTap: () => launchUrlFromString(bookmark.link).then((errorCode) { if (context.mounted && errorCode != UrlLaunchErrorCode.none) { Notifying.showUrlErrorSnackbar(context, errorCode); } else if (context.mounted) { Navigator.of(context).pop(); } }), ); } @override Widget build(BuildContext context) { if (filteredBookmarks.isNotEmpty) { return ListView.builder( itemBuilder: bookmarkListItemBuilder, itemCount: filteredBookmarks.length, ); } return Center(child: Text('Start searching')); } Iterable get filteredBookmarks => allBookmarks.where( (bookmark) => bookmark.name.toLowerCase().contains( context.watch().searchText.toLowerCase(), ), ); }