Я новичок во Flutter и Dart, поэтому я пытаюсь создать простое приложение для поиска с запросами на основе слова, введенного в строке поиска Flutters showSearch. Я понимаю список, созданный для отображения предложений пользователю, и нажатие на это предложение активирует виджет buildresults. Однако я хочу включить кнопку поиска на клавиатуре, чтобы просто искать введенное слово, а не нажимать на ограниченный список предложений. Простая android клавиатура
При обычном нажатии кнопки клавиатура закрывается, результаты сборки не активируются. Пока вам нужно щелкнуть предложенный вариант списка. Есть ли способ включить кнопку поиска на клавиатуре для поиска введенного текста? или ограничен ли пользователь предложенными опциями списка? Я перечислю своего делегата showSearch ниже:
class StockDelegate extends SearchDelegate<String> {
final stocks = [
"IBM",
"NKLAW",
"DKNGZ",
"DRD",
"PRTS",
"TSLA",
"KIRK",
"VBIV"
];
final suggested = ["IBM", "TSLA", "BNTX"];
@override
// TODO: implement textInputAction
// TODO: implement textInputAction
TextInputAction get textInputAction => super.textInputAction;
@override
List<Widget> buildActions(BuildContext context) {
//actions for app bar
StockProvider _stockProvider =
Provider.of<StockProvider>(context, listen: true);
return [
IconButton(
icon: Icon(Icons.clear),
onPressed: () {
query = '';
}),
];
}
@override
Widget buildLeading(BuildContext context) {
//Leading icon on the left of the app bar
return IconButton(
icon: AnimatedIcon(
icon: AnimatedIcons.menu_arrow,
progress: transitionAnimation,
),
onPressed: () {
close(context, null);
});
}
@override
Widget buildResults(BuildContext context) {
//build results code
}
@override
Widget buildSuggestions(BuildContext context) {
// show when someone search for something
stocks.insert(0, query.toString());
final suggestionList = query.isEmpty
? suggested
: stocks.where((p) => p.startsWith(query)).toList();
return ListView.builder(
itemCount: suggestionList.length,
itemBuilder: (context, index) => ListTile(
onTap: () async {
Provider.of<StockProvider>(context, listen: false)
.searchBySymbol(suggestionList[index]);
if (!stocks.contains(suggestionList[index]))
suggestionList.add(suggestionList[index]);
showResults(context);
},
leading: Icon(Icons.attach_money),
title: Text(suggestionList[index]),
),
);
}