Flutter 如何比较list.where中的多个值
我想在列表中添加多个值 例如,我在customList中解码了以下json:Flutter 如何比较list.where中的多个值,flutter,Flutter,我想在列表中添加多个值 例如,我在customList中解码了以下json: "cars": [ { "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] }, { "name":"BMW", "models":[ "320", "X3", "X5" ] }, { "name":"Fiat", "models":[ "500", "Panda" ] } ] 我想在用户搜索某个关键字时获得更新的列表。关键字还可以包含汽车或车型的名称
"cars": [
{ "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },
{ "name":"BMW", "models":[ "320", "X3", "X5" ] },
{ "name":"Fiat", "models":[ "500", "Panda" ] }
]
我想在用户搜索某个关键字时获得更新的列表。关键字还可以包含汽车或车型的名称。我怎样才能做到这一点。下面是我仅在名称中成功搜索的代码
List<Cars> updatedList = List<Cars>();
_onChanged(String value) {
setState(() {
updatedList = carsList
.where((string) => string.name.contains(value.toLowerCase()))
.toList();
});
}
List updatedList=List();
_onChanged(字符串值){
设置状态(){
updatedList=carsList
.where((string)=>string.name.contains(value.toLowerCase())
.toList();
});
}
类HomeState扩展状态{
映射carsMap={
“汽车”:[
{
“名称”:“福特”,
“车型”:[“嘉年华”、“焦点”、“野马”]
},
{
“名称”:“宝马”,
“型号”:[“320”、“X3”、“X5”]
},
{
“名称”:“菲亚特”,
“型号”:[“500”,“熊猫”]
}
]
};
列表carsList=[];
字符串query1='';
@凌驾
void initState(){
super.initState();
carsList=carsMap['cars'];
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:常量文本(“单独列表”),
),
主体:容器(
填充:从LTRB(5,10,5,10)开始的边缘设置,
子项:列(mainAxisSize:mainAxisSize.min,子项:[
文本字段(
一旦更改:(s){
query1=s;
},
装饰:输入装饰(
hintText:“过滤器座位…”,
后缀:图标按钮(
图标:图标(Icons.search,颜色:Colors.black),
已按下:(){
showFiltered();
}))),
ListView.builder(
收缩膜:对,
itemCount:carsList.length,
项目生成器:(con,ind){
返回列表块(
标题:文本(carsList[ind][name'],
样式:TextStyle(
颜色:颜色,黑色,
)));
})
])));
}
showFiltered(){
List updatedList=carsList.where(
(m) =>m.toString().toLowerCase().contains(query1.toLowerCase()).toList();
显示对话框(
上下文:上下文,
建筑商:(con){
返回对话框(
子项:ListView.builder(
收缩膜:对,
itemCount:updatedList.length,
项目生成器:(con,ind){
返回列表块(
标题:文本(更新列表[ind][name'],
样式:TextStyle(
颜色:颜色,黑色,
)));
}));
});
}
}
是否要通过搜索显示结果!?或者在搜索后分离列表???@NaveenAvidi分离列表我更新了我的答案!检查它是否有用!
class HomeState extends State<Home> {
Map carsMap = {
"cars": [
{
"name": "Ford",
"models": ["Fiesta", "Focus", "Mustang"]
},
{
"name": "BMW",
"models": ["320", "X3", "X5"]
},
{
"name": "Fiat",
"models": ["500", "Panda"]
}
]
};
List<Map> carsList = [];
String query1 = '';
@override
void initState() {
super.initState();
carsList = carsMap['cars'];
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Seperate List'),
),
body: Container(
padding: EdgeInsets.fromLTRB(5, 10, 5, 10),
child: Column(mainAxisSize: MainAxisSize.min, children: [
TextField(
onChanged: (s) {
query1 = s;
},
decoration: InputDecoration(
hintText: 'Filter Seacrh...',
suffixIcon: IconButton(
icon: Icon(Icons.search, color: Colors.black),
onPressed: () {
showFiltered();
}))),
ListView.builder(
shrinkWrap: true,
itemCount: carsList.length,
itemBuilder: (con, ind) {
return ListTile(
title: Text(carsList[ind]['name'],
style: TextStyle(
color: Colors.black,
)));
})
])));
}
showFiltered() {
List<Map> updatedList = carsList.where(
(m) => m.toString().toLowerCase().contains(query1.toLowerCase())).toList();
showDialog(
context: context,
builder: (con) {
return Dialog(
child: ListView.builder(
shrinkWrap: true,
itemCount: updatedList.length,
itemBuilder: (con, ind) {
return ListTile(
title: Text(updatedList[ind]['name'],
style: TextStyle(
color: Colors.black,
)));
}));
});
}
}