我想在一个listview活动上创建一个搜索栏,listview包含两个文本(姓名和微博用户名)。鉴于该listview上有几百人,请问如何使用Flutter按名字搜索?
我的做法是
void filterSearchResults(String query) {
List<String> dummySearchList = List<String>();
dummySearchList.addAll(listItems);
if (query.isNotEmpty) {
List<String> dummyListData = List<String>();
dummySearchList.forEach((item) {
if (item.contains(query)) {
dummyListData.add(item); }
});
setState(() {
writeSearch.clear();
writeSearch.addAll(dummyListData);
}); return;
} else {
setState(() {
writeSearch.clear();
writeSearch.addAll(listItems);
});
}
}
但listItems给出了错误信息
以下是我的火商城电话
BatchBStreamOneNotifier batchBStreamOneNotifier = Provider.of<BatchBStreamOneNotifier>(context, listen: false);
getBatchBStreamOne(batchBStreamOneNotifier);
谢谢你
这应该可以帮助你搜索到列表。
List originalItemList = List();
List searchedItemList = List();
search(String query){
if (query.isNotEmpty) {
// search the list for the user `name`
List nameSearch = originalItemList.where((user){
String userName = user['name'];
return userName.toLowerCase().contains(query.toLowerCase());
}).toList();
// set the filtered list to the unfiltered list
setState(() {
searchedItemList = nameSearch;
});
} else {
setState(() {
searchedItemList = originalItemList;
});
}
}