mirror of
https://github.com/haorendashu/nowser.git
synced 2025-12-18 02:04:18 +01:00
web input add suggestion
This commit is contained in:
@@ -1,8 +1,12 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:nostr_sdk/utils/string_util.dart';
|
import 'package:nostr_sdk/utils/string_util.dart';
|
||||||
import 'package:nowser/component/qrscanner.dart';
|
import 'package:nowser/component/qrscanner.dart';
|
||||||
|
import 'package:nowser/data/bookmark.dart';
|
||||||
import 'package:nowser/main.dart';
|
import 'package:nowser/main.dart';
|
||||||
|
import 'package:nowser/provider/bookmark_provider.dart';
|
||||||
import 'package:nowser/util/router_util.dart';
|
import 'package:nowser/util/router_util.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
import 'package:searchfield/searchfield.dart';
|
||||||
|
|
||||||
import '../../const/base.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<Widget> list = [];
|
||||||
|
|
||||||
|
List<SearchFieldListItem<Bookmark>> suggestions = [];
|
||||||
|
for (var bookmark in bookmarks) {
|
||||||
|
suggestions.add(SearchFieldListItem(
|
||||||
|
bookmark.url!,
|
||||||
|
item: bookmark,
|
||||||
|
));
|
||||||
|
}
|
||||||
var inputWidget = Hero(
|
var inputWidget = Hero(
|
||||||
tag: "urlInput",
|
tag: "urlInput",
|
||||||
child: Material(
|
child: Material(
|
||||||
child: TextField(
|
child: SearchField(
|
||||||
|
suggestions: suggestions,
|
||||||
controller: textEditingController,
|
controller: textEditingController,
|
||||||
decoration: const InputDecoration(border: OutlineInputBorder()),
|
suggestionDirection: SuggestionDirection.up,
|
||||||
focusNode: focusNode,
|
searchInputDecoration: SearchInputDecoration(
|
||||||
onSubmitted: (value) {
|
border: OutlineInputBorder(),
|
||||||
|
),
|
||||||
|
onSubmit: (value) {
|
||||||
checkAndBack(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"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
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:
|
shared_preferences:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ dependencies:
|
|||||||
quick_actions: ^1.0.8
|
quick_actions: ^1.0.8
|
||||||
flutter_pinned_shortcut_plus: ^0.0.2
|
flutter_pinned_shortcut_plus: ^0.0.2
|
||||||
flutter_cache_manager: ^3.4.1
|
flutter_cache_manager: ^3.4.1
|
||||||
|
searchfield: 1.2.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_launcher_icons: ^0.13.1
|
flutter_launcher_icons: ^0.13.1
|
||||||
|
|||||||
Reference in New Issue
Block a user