start new search when no results

This commit is contained in:
Fabian Freund
2025-06-23 22:51:13 +02:00
parent 967ff8fd6d
commit a70c8c2841
3 changed files with 19 additions and 13 deletions
@@ -28,13 +28,20 @@ class FindInPageController extends _$FindInPageController {
return service.findAll(text);
}
Future<void> findNext({bool forward = true}) {
Future<void> findNext({required String fallbackText, bool forward = true}) {
final tabId = ref.read(selectedTabProvider);
final service = ref.read(findInPageRepositoryProvider(tabId).notifier);
final hasMatches =
ref.read(selectedTabStateProvider)?.findResultState.hasMatches == true;
state = state.copyWith.visible(true);
return service.findNext(forward);
if (hasMatches) {
return service.findNext(forward);
} else {
return service.findAll(fallbackText);
}
}
Future<void> clearMatches() {
@@ -7,7 +7,7 @@ part of 'find_in_page.dart';
// **************************************************************************
String _$findInPageControllerHash() =>
r'ab421be931406325bf6b22dd9f545117ea426665';
r'fd335be9345b405856cf2aa68312d4d1535d8c5e';
/// See also [FindInPageController].
@ProviderFor(FindInPageController)
@@ -61,21 +61,20 @@ class FindInPageWidget extends HookConsumerWidget {
IconButton(
icon: const Icon(Icons.arrow_upward),
onPressed: () async {
if (searchResult?.hasMatches ?? false) {
await ref
.read(findInPageControllerProvider.notifier)
.findNext(forward: false);
}
await ref
.read(findInPageControllerProvider.notifier)
.findNext(
forward: false,
fallbackText: textController.text,
);
},
),
IconButton(
icon: const Icon(Icons.arrow_downward),
onPressed: () async {
if (searchResult?.hasMatches ?? false) {
await ref
.read(findInPageControllerProvider.notifier)
.findNext();
}
await ref
.read(findInPageControllerProvider.notifier)
.findNext(fallbackText: textController.text);
},
),
IconButton(