added functionality to clear search text
All checks were successful
Flutter APK Build / Build Flutter APK (push) Successful in 6m38s

This commit is contained in:
2026-01-21 12:27:52 +01:00
parent 321a310add
commit c7c5b3682d
3 changed files with 37 additions and 12 deletions

View File

@@ -1,16 +1,34 @@
import 'package:flutter/material.dart';
class SearchBarWidget extends StatelessWidget {
const SearchBarWidget({super.key, required this.onEditingComplete});
const SearchBarWidget({
super.key,
required this.onEditingComplete,
required this.onResetSearch,
});
final Function(String searchString) onEditingComplete;
@override
Widget build(BuildContext context) {
return TextField(onChanged: (text) => onChanged(text, context));
}
final Function() onResetSearch;
void onChanged(String text, BuildContext context) {
if (context.mounted) onEditingComplete(text);
}
@override
Widget build(BuildContext context) {
final searchTextController = TextEditingController();
return TextField(
controller: searchTextController,
onChanged: (text) => onChanged(text, context),
decoration: InputDecoration(
suffixIcon: IconButton(
onPressed: () {
searchTextController.clear();
onResetSearch();
},
icon: Icon(Icons.delete_outline_outlined),
),
),
);
}
}

View File

@@ -17,6 +17,12 @@ class SearchResultsWidget extends StatefulWidget {
class _SearchResultsWidgetState extends State<SearchResultsWidget> {
final List<Bookmark> allBookmarks = Storage.loadBookmarks();
@override
void deactivate() {
context.read<SearchProvider>().removeSearchText(silent: true);
super.deactivate();
}
Widget bookmarkListItemBuilder(BuildContext context, int index) {
final bookmark = filteredBookmarks.elementAt(index);
return ListTile(
@@ -31,6 +37,12 @@ class _SearchResultsWidgetState extends State<SearchResultsWidget> {
);
}
Iterable<Bookmark> get filteredBookmarks => allBookmarks.where(
(bookmark) => bookmark.name.toLowerCase().contains(
context.watch<SearchProvider>().searchText.toLowerCase(),
),
);
@override
Widget build(BuildContext context) {
if (filteredBookmarks.isNotEmpty) {
@@ -41,10 +53,4 @@ class _SearchResultsWidgetState extends State<SearchResultsWidget> {
}
return Center(child: Text('Start searching'));
}
Iterable<Bookmark> get filteredBookmarks => allBookmarks.where(
(bookmark) => bookmark.name.toLowerCase().contains(
context.watch<SearchProvider>().searchText.toLowerCase(),
),
);
}