flutter 开发中常用的list,map

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter 开发中常用的list,map相关的知识,希望对你有一定的参考价值。

参考技术A 最近打算开始写点东西,长期不写,感觉都不会写东西了,写写东西总不会有错,总是会对自己有点帮助的。开始学着写点东西,开始写的不好,相信写的多了会越来越好的。

开始用flutter 写项目了,没有系统和有条理的去学习和整理,总感觉是乱的。感觉有需要的东西还是写出来比较好,没事的时候可以回顾看看,以后也可以比较下自己有没有进步。

flutter 开发中常用到List 和 map,对于它的使用必须要清楚

接着上面,接下来是map

如何过滤 List<List<Map<String, dynamic>>> 以在 Flutter 中获取值?

【中文标题】如何过滤 List<List<Map<String, dynamic>>> 以在 Flutter 中获取值?【英文标题】:How can I filter List<List<Map<String, dynamic>>> to get a value in Flutter? 【发布时间】:2021-03-14 13:55:00 【问题描述】:

我有 JSON 数据,我正在使用 await jsonDecode 加载到 List>>

例如,我有一个;

我需要过滤儿子得到name值:Abdul Fatah

如果我有一个name_group = alpukat。

如何过滤 List JSON 数据以在 Flutter 中获取值?

[       
             
                "receive_brutto" : 10,
                "receive_netto" : 20,
                "receive_reject" : 30,
                "data" : [
                    
                        "id_trx_procurement" : 1,
                        "item_group_id" : 3135,
                        "date_proc" : "2020-11-29",
                        "trx_procurement2" : 
                            "user_proc" : 
                                "user" : 
                                    "name" : "Abdul Fatah"
                                
                            
                        ,
                        "item_group_proc" : 
                            "name_group" : "Alpukat",
                            "uom_item_group_name" : "Kg"
                        ,
                        "uom_proc" : 
                            "name" : "Kg"
                        
                    ,
                    
                        "id_trx_procurement" : 2,
                        "item_group_id" : 3135,
                        "date_proc" : "2020-11-29",
                        "trx_procurement2" : 
                            "user_proc" : 
                                "user" : 
                                    "name" : "Abdul Fatah"
                                
                            
                        ,
                        "item_group_proc" : 
                            "name_group" : "Apel",
                            "uom_item_group_name" : "Kg"
                        ,
                        "uom_proc" : 
                            "name" : "Kg"
                        
                    
                ]
            ,
            
                "receive_brutto" : 10,
                "receive_netto" : 20,
                "receive_reject" : 30,
                "data" : [
                    
                        "id_trx_procurement" : 1,
                        "item_group_id" : 3135,
                        "date_proc" : "2020-11-29",
                        "trx_procurement2" : 
                            "user_proc" : 
                                "user" : 
                                    "name" : "Abdul Fatah"
                                
                            
                        ,
                        "item_group_proc" : 
                            "name_group" : "Alpukat",
                            "uom_item_group_name" : "Kg"
                        ,
                        "uom_proc" : 
                            "name" : "Kg"
                        
                    ,
                    
                        "id_trx_procurement" : 2,
                        "item_group_id" : 3135,
                        "date_proc" : "2020-11-29",
                        "trx_procurement2" : 
                            "user_proc" : 
                                "user" : 
                                    "name" : "Abdul Fatah"
                                
                            
                        ,
                        "item_group_proc" : 
                            "name_group" : "Apel",
                            "uom_item_group_name" : "Kg"
                        ,
                        "uom_proc" : 
                            "name" : "Kg"
                        
                    
                ]
            
]

我想要结果过滤列表data 和数据列表添加到列表中,

这是我的代码,但不起作用。

List<E> listItemReceive;
listItemReceive.forEach((element1) 
  element1.data.forEach((element2) 
    if (element2.itemGroupProc.namegroup
            .toLowerCase()
            .contains(text.toLowerCase()) ||
        element2.trxProcurement2.userProc.user.name
            .toLowerCase()
            .contains(text.toLowerCase())) 
      tmp2.add(element2);
    
    element1.add(tmp2);
  );
  tmplistItemReceive.add(element1);
);

我该如何解决?

【问题讨论】:

感谢您编辑我的问题。 ???? 【参考方案1】:

根据您的代码正在执行的操作。对于每个element1,您将从element1.data 中过滤掉一些设计项。进入一个名为 tmp2 的列表(我猜)。

然后,添加到element1element1.add(tmp2);

添加到element1后。您不会重置并为下一次迭代分配新的tmp2。所以tmp2 会继续增长

【讨论】:

【参考方案2】:

您可以使用键遍历列表。请看下面过滤掉所有名字和name_group的代码。

    void main() 
  List<Map<String, dynamic>> one = [
    
      "receive_brutto": 10,
      "receive_netto": 20,
      "receive_reject": 30,
      "data": [
        
          "id_trx_procurement": 1,
          "item_group_id": 3135,
          "date_proc": "2020-11-29",
          "trx_procurement2": 
            "user_proc": 
              "user": "name": "Abdul Fatah"
            
          ,
          "item_group_proc": 
            "name_group": "Alpukat",
            "uom_item_group_name": "Kg"
          ,
          "uom_proc": "name": "Kg"
        ,
        
          "id_trx_procurement": 2,
          "item_group_id": 3135,
          "date_proc": "2020-11-29",
          "trx_procurement2": 
            "user_proc": 
              "user": "name": "Abdul Fatah"
            
          ,
          "item_group_proc": 
            "name_group": "Apel",
            "uom_item_group_name": "Kg"
          ,
          "uom_proc": "name": "Kg"
        
      ]
    ,
    
      "receive_brutto": 10,
      "receive_netto": 20,
      "receive_reject": 30,
      "data": [
        
          "id_trx_procurement": 1,
          "item_group_id": 3135,
          "date_proc": "2020-11-29",
          "trx_procurement2": 
            "user_proc": 
              "user": "name": "Abdul Fatah"
            
          ,
          "item_group_proc": 
            "name_group": "Alpukat",
            "uom_item_group_name": "Kg"
          ,
          "uom_proc": "name": "Kg"
        ,
        
          "id_trx_procurement": 2,
          "item_group_id": 3135,
          "date_proc": "2020-11-29",
          "trx_procurement2": 
            "user_proc": 
              "user": "name": "Abdul Fatah"
            
          ,
          "item_group_proc": 
            "name_group": "Apel",
            "uom_item_group_name": "Kg"
          ,
          "uom_proc": "name": "Kg"
        
      ]
    
  ];

  List<String> names = [];
  one.forEach((item)=>
    (item['data'] as List).forEach((item2)=>
      names.add(item2['trx_procurement2']['user_proc']['user']['name'])
    )
  );
  print(names);

 
 List<String> nameGroup = [];
  one.forEach((item)=>
    (item['data'] as List).forEach((item2)=>
      nameGroup.add(item2['item_group_proc']['name_group'])
    )
  );
  print(nameGroup);
  
  

【讨论】:

我想要什么,如何将 List name 和 List nameGroup 添加到 List ones 中?这样我就可以使用 List ones 获取数据。 我没听懂,你能改一下问题吗? 你想让name和nameGroup在同一个List吗? 我想过滤元素data,其中元素data在一个列表中,过滤结果元素data也是一个列表。如何将过滤结果元素data以列表的形式添加到列表中? 是的,我想在同一个列表中命名和命名组。

以上是关于flutter 开发中常用的list,map的主要内容,如果未能解决你的问题,请参考以下文章

第三节: Dart 中常用集合 List/Map

List 与 Map的常用方法

Play Framework常用标签list,set,如何遍历list、map类型数据

Flutter 常用循环函数 forEach map where any every

C++ STL常用标准库容器入门(vector,map,set,string,list...)

C++ STL常用标准库容器入门(vector,map,set,string,list...)