dismiss suggestion
This commit is contained in:
+16
-4
@@ -8,6 +8,7 @@ import 'package:lensai/features/geckoview/features/search/domain/providers/engin
|
||||
import 'package:lensai/presentation/hooks/listenable_callback.dart';
|
||||
import 'package:lensai/presentation/widgets/auto_suggest_text_field.dart';
|
||||
import 'package:lensai/utils/uri_parser.dart' as uri_parser;
|
||||
import 'package:nullability/nullability.dart';
|
||||
|
||||
class AddressWithSuggestionsField extends HookConsumerWidget {
|
||||
const AddressWithSuggestionsField({
|
||||
@@ -27,15 +28,26 @@ class AddressWithSuggestionsField extends HookConsumerWidget {
|
||||
final addressTextFocusNode = useFocusNode();
|
||||
|
||||
final suggestion = useState<String?>(null);
|
||||
final lastText = useRef<String>(addressTextController.text);
|
||||
|
||||
useListenableCallback(addressTextController, () async {
|
||||
if (addressTextController.text.isNotEmpty) {
|
||||
final result = await ref
|
||||
.read(engineSuggestionsProvider.notifier)
|
||||
.getAutocompleteSuggestion(addressTextController.text);
|
||||
if (suggestion.value.isNotEmpty &&
|
||||
lastText.value.length > 1 &&
|
||||
addressTextController.text ==
|
||||
lastText.value.substring(0, lastText.value.length - 1)) {
|
||||
suggestion.value = null;
|
||||
addressTextController.text = lastText.value;
|
||||
} else if (addressTextController.text != lastText.value) {
|
||||
final result = await ref
|
||||
.read(engineSuggestionsProvider.notifier)
|
||||
.getAutocompleteSuggestion(addressTextController.text);
|
||||
|
||||
suggestion.value = result;
|
||||
suggestion.value = result;
|
||||
}
|
||||
}
|
||||
|
||||
lastText.value = addressTextController.text;
|
||||
});
|
||||
|
||||
return AutoSuggestTextField(
|
||||
|
||||
+16
-4
@@ -6,6 +6,7 @@ import 'package:lensai/presentation/hooks/listenable_callback.dart';
|
||||
import 'package:lensai/presentation/widgets/auto_suggest_text_field.dart';
|
||||
import 'package:lensai/utils/form_validators.dart';
|
||||
import 'package:lensai/utils/uri_parser.dart' as uri_parser;
|
||||
import 'package:nullability/nullability.dart';
|
||||
|
||||
class EditUrlDialog extends HookConsumerWidget {
|
||||
final Uri initialUrl;
|
||||
@@ -26,15 +27,26 @@ class EditUrlDialog extends HookConsumerWidget {
|
||||
final addressTextFocusNode = useFocusNode();
|
||||
|
||||
final suggestion = useState<String?>(null);
|
||||
final lastText = useRef<String>(addressTextController.text);
|
||||
|
||||
useListenableCallback(addressTextController, () async {
|
||||
if (addressTextController.text.isNotEmpty) {
|
||||
final result = await ref
|
||||
.read(engineSuggestionsProvider.notifier)
|
||||
.getAutocompleteSuggestion(addressTextController.text);
|
||||
if (suggestion.value.isNotEmpty &&
|
||||
lastText.value.length > 1 &&
|
||||
addressTextController.text ==
|
||||
lastText.value.substring(0, lastText.value.length - 1)) {
|
||||
suggestion.value = null;
|
||||
addressTextController.text = lastText.value;
|
||||
} else if (addressTextController.text != lastText.value) {
|
||||
final result = await ref
|
||||
.read(engineSuggestionsProvider.notifier)
|
||||
.getAutocompleteSuggestion(addressTextController.text);
|
||||
|
||||
suggestion.value = result;
|
||||
suggestion.value = result;
|
||||
}
|
||||
}
|
||||
|
||||
lastText.value = addressTextController.text;
|
||||
});
|
||||
|
||||
return Form(
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:lensai/presentation/hooks/listenable_callback.dart';
|
||||
import 'package:lensai/presentation/widgets/auto_suggest_text_field.dart';
|
||||
import 'package:lensai/presentation/widgets/speech_to_text_button.dart';
|
||||
import 'package:lensai/presentation/widgets/url_icon.dart';
|
||||
import 'package:nullability/nullability.dart';
|
||||
|
||||
class SearchField extends HookConsumerWidget {
|
||||
final TextEditingController textEditingController;
|
||||
@@ -42,16 +43,27 @@ class SearchField extends HookConsumerWidget {
|
||||
);
|
||||
|
||||
final suggestion = useState<String?>(null);
|
||||
final lastText = useRef<String>(textEditingController.text);
|
||||
|
||||
if (showSuggestions) {
|
||||
useListenableCallback(textEditingController, () async {
|
||||
if (textEditingController.text.isNotEmpty) {
|
||||
final result = await ref
|
||||
.read(engineSuggestionsProvider.notifier)
|
||||
.getAutocompleteSuggestion(textEditingController.text);
|
||||
if (suggestion.value.isNotEmpty &&
|
||||
lastText.value.length > 1 &&
|
||||
textEditingController.text ==
|
||||
lastText.value.substring(0, lastText.value.length - 1)) {
|
||||
suggestion.value = null;
|
||||
textEditingController.text = lastText.value;
|
||||
} else if (textEditingController.text != lastText.value) {
|
||||
final result = await ref
|
||||
.read(engineSuggestionsProvider.notifier)
|
||||
.getAutocompleteSuggestion(textEditingController.text);
|
||||
|
||||
suggestion.value = result;
|
||||
suggestion.value = result;
|
||||
}
|
||||
}
|
||||
|
||||
lastText.value = textEditingController.text;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user