Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何实现搜索功能?_Flutter_Dart_Search_Flutter Provider_Flutter Listview - Fatal编程技术网

Flutter 如何实现搜索功能?

Flutter 如何实现搜索功能?,flutter,dart,search,flutter-provider,flutter-listview,Flutter,Dart,Search,Flutter Provider,Flutter Listview,我需要对我的应用程序实现搜索功能。它将搜索到提供者列表。我在Youtube的帮助下添加了搜索栏:) 现在我不知道如何只显示拟合结果。我在谷歌上找不到一个好的例子,一个月前我开始使用flifter 结果应显示为列表视图 如果你能帮助我,我将非常感激 这是我的提供商: 导入'dart:convert'; 进口“包装:颤振/材料.省道”; 将“package:http/http.dart”导入为http; 导入“../models/item.dart”; 类项扩展ChangeNotifier{ 列表_

我需要对我的应用程序实现搜索功能。它将搜索到提供者列表。我在Youtube的帮助下添加了搜索栏:)

现在我不知道如何只显示拟合结果。我在谷歌上找不到一个好的例子,一个月前我开始使用flifter

结果应显示为列表视图

如果你能帮助我,我将非常感激

这是我的提供商:

导入'dart:convert';
进口“包装:颤振/材料.省道”;
将“package:http/http.dart”导入为http;
导入“../models/item.dart”;
类项扩展ChangeNotifier{
列表_项=[];
列出获取项目{
返回[…_项];
}
项目findById(字符串id){
返回_items.firstWhere((prod)=>prod.id==id);
}
Future fetchAndSetProducts()异步{
常量url=
“…europe-west1.firebasedatabase.app/items.json”;
最终响应=等待http.get(Uri.parse(url));
最终extractedData=json.decode(response.body)作为映射;
最终列表loadedItems=[];
extractedData.forEach((itemID,itemData){
loadedItems.add(项目(
id:itemID,
标题:itemData[“标题”],
金额:itemData[“金额”],
大小:itemData[“大小”],
品牌:itemData[“品牌”],
条件:itemData[“条件”],
说明:itemData[“说明”],
imageUrl:itemData[“imageUrl”],
));
});
_项目=loadedItems;
notifyListeners();
打印(回复);
}
未来附加项(
字符串pickettitle,
双尖头安装,
字符串选取大小,
串选品牌,
字符串选取条件,
字符串选取描述,
字符串选择器(R){
常量url=
“…europe-west1.firebasedatabase.app/items.json”;
返回http
.邮政(
解析(url),
正文:json.encode(
{
“标题”:精选标题,
“金额”:pickedAmount,
“大小”:选取大小,
“品牌”:精选品牌,
“条件”:选取的条件,
“描述”:精选描述,
“imageUrl”:pickedURL,
},
),
)
.然后((回应){
最终新项目=项目(
标题:PicketTitle,
金额:pickedAmount,
大小:pickedSize,
品牌:精选品牌,
条件:pickedCondition,
描述:选取描述,
imageUrl:pickedURL,
id:json.decode(response.body)[“name”],
);
_项目。添加(新项目);
notifyListeners();
打印(项目长度);
});
}
void updateItem(字符串id,项newProduct){
最终产品索引=_items.indexWhere((prod)=>prod.id==id);
如果(prodIndex>=0){
_项目[prodIndex]=新产品;
notifyListeners();
}
打印(“Keine ID”);
}
void deleteItem(字符串id){
_items.removeWhere((prod)=>prod.id==id);
notifyListeners();
}
}
这是我的搜索页面:

导入“包装:颤振/材料.省道”;
导入“包:provider/provider.dart”;
导入“../providers/items.dart”;
导入“../widgets/item_gridtile.dart”;
类搜索扩展了StatefulWidget{
@凌驾
_SearchState createState()=>\u SearchState();
}
类_SearchState扩展了状态{
@凌驾
小部件构建(构建上下文)=>Scaffold(
resizeToAvoidBottomInset:false,
appBar:appBar(
标题:文本(“搜索”),
),
主体:容器(
子项:列(子项:[
填充物(
填充:常数边集全部(8.0),
孩子:TextField(
onTap:(){
showSearch(上下文:context,委托:DataSearch());
},
一旦改变:(v){},
装饰:输入装饰(
labelText:“搜索”,
hintText:“搜索”,
前缀:图标(Icons.search),
边框:大纲输入边框(
borderRadius:borderRadius.all(半径.圆形(25.0)),
),
)
])));
}
类DataSearch扩展了SearchDelegate{
@凌驾
列出buildActions(BuildContext上下文){
返回[
图标按钮(
图标:图标(图标。清除),
已按下:(){
query=“”;
})
];
}
@凌驾
小部件buildLeading(BuildContext上下文){
返回图标按钮(
图标:动画指令(
图标:animatedics.menu_箭头,进度:transitionAnimation),
已按下:(){
关闭(上下文,空);
});
}
@凌驾
小部件构建结果(构建上下文){
返回文本(“”);
}
@凌驾
小部件构建建议(构建上下文){
返回文本(“”);
//抛出未实现的错误();
}
}