首页 > 解决方案 > 简化颤振中的多个过滤器

问题描述

这是我的代码

value = data.where((i) => (i.type == 1 || i.type == 3)).toList();
      if (data.length == 0) {
        _final = null;
      } else {
        dataDefault = value .where((i) => i.isdefault == 1).toList();
      }
      if (dataDefault.length == 0) {
        data[0].isdefault = 1;
      }

      finalvalue = dataDefault.where((i) => i.isdefault == 1).toList();

这是我的json

[
  {
    "id": 129,
    "type": 3,
    "is_default": 1
  },
  {
    "id": 130,
    "type": 1,
    "is_default": 0
  },
  {
    "id": 131,
    "type": 5,
    "is_default": 1
  }
]

我需要的是,如果没有可用的数组,我需要检查数组是类型 1 还是 3,我需要设置第一个数组并更改为默认值,然后我想过滤整个数组并检查默认字段

它工作正常,但我需要简化代码,还需要知道方法是正确的

标签: flutter

解决方案


根据您的描述,我得到的原始请求是:

if(array not contains type1 or type3){
  set array[0] to default
}
result <- get all 'is default' from array

简化版:

var result; // null as default

if (data != null) {
  if(data.where((i) => (i.type == 1 || i.type == 3)).isEmpty) {
    data[0].isdefault = 1;
  }
  result = data.where((i) => i.isdefault == 1).toList();
}

或使用空安全检查???

if(data?.where((i) => (i.type == 1 || i.type == 3))?.isEmpty ?? false){
  data[0].isdefault = 1;
}

final result = data?.where((i) => i.isdefault == 1)?.toList();

推荐阅读