web input add suggestion

This commit is contained in:
DASHU
2025-01-22 14:23:00 +08:00
parent 3b2b46d2ec
commit 7b401d2491
3 changed files with 61 additions and 4 deletions

View File

@@ -1,8 +1,12 @@
import 'package:flutter/material.dart';
import 'package:nostr_sdk/utils/string_util.dart';
import 'package:nowser/component/qrscanner.dart';
import 'package:nowser/data/bookmark.dart';
import 'package:nowser/main.dart';
import 'package:nowser/provider/bookmark_provider.dart';
import 'package:nowser/util/router_util.dart';
import 'package:provider/provider.dart';
import 'package:searchfield/searchfield.dart';
import '../../const/base.dart';
@@ -45,18 +49,62 @@ class _WebUrlInputRouter extends State<WebUrlInputRouter> {
}
}
var bookmarkProvider = Provider.of<BookmarkProvider>(context);
var bookmarks = bookmarkProvider.bookmarks;
List<Widget> list = [];
List<SearchFieldListItem<Bookmark>> suggestions = [];
for (var bookmark in bookmarks) {
suggestions.add(SearchFieldListItem(
bookmark.url!,
item: bookmark,
));
}
var inputWidget = Hero(
tag: "urlInput",
child: Material(
child: TextField(
child: SearchField(
suggestions: suggestions,
controller: textEditingController,
decoration: const InputDecoration(border: OutlineInputBorder()),
focusNode: focusNode,
onSubmitted: (value) {
suggestionDirection: SuggestionDirection.up,
searchInputDecoration: SearchInputDecoration(
border: OutlineInputBorder(),
),
onSubmit: (value) {
checkAndBack(value);
},
focusNode: focusNode,
onSuggestionTap: (suggestion) {
var item = suggestion.item;
if (item != null) {
checkAndBack(item.url);
}
},
onSearchTextChanged: (input) {
print("onSearchTextChanged");
List<SearchFieldListItem> matchList = [];
if (StringUtil.isBlank(input)) {
return matchList;
}
for (var suggestion in suggestions) {
var item = suggestion.item;
if (item != null && StringUtil.isNotBlank(item.url)) {
if (item.url!.contains(input)) {
matchList.add(suggestion);
continue;
}
if (item.title != null && item.title!.contains(input)) {
matchList.add(suggestion);
continue;
}
}
}
return matchList;
},
),
),
);

View File

@@ -859,6 +859,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.2.0"
searchfield:
dependency: "direct main"
description:
name: searchfield
sha256: "8d23d53967ac5b0774611150b286dacd70c9c5de74d3db433bda2104b4803755"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
shared_preferences:
dependency: "direct main"
description:

View File

@@ -55,6 +55,7 @@ dependencies:
quick_actions: ^1.0.8
flutter_pinned_shortcut_plus: ^0.0.2
flutter_cache_manager: ^3.4.1
searchfield: 1.2.0
dev_dependencies:
flutter_launcher_icons: ^0.13.1