Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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 如何比较list.where中的多个值_Flutter - Fatal编程技术网

Flutter 如何比较list.where中的多个值

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" ] } ] 我想在用户搜索某个关键字时获得更新的列表。关键字还可以包含汽车或车型的名称

我想在列表中添加多个值

例如,我在customList中解码了以下json:

 "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,
                            )));
                  }));
        });
  }
}