mirror of
https://github.com/haorendashu/nowser.git
synced 2025-12-17 09:54:19 +01:00
web input add suggestion
This commit is contained in:
@@ -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;
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user