generateList method

List<ItemSelectTable> generateList(
  1. List<Map<String, dynamic>> data,
  2. int offset,
  3. SelectModel selectModel
)
inherited

Implementation

List<ItemSelectTable> generateList(
    List<Map<String, dynamic>> data, int offset, SelectModel selectModel) {
  ObservableList<ItemSelectTable> lista = ObservableList();
  if (offset < 0) {
    offset = 0;
  }
  String id = this.id ?? selectModel.id;

  /// Apply a filter so that only distinct elements remain
  int oldLength = data.length;
  data = data.distinctBy((e) => e[id]);

  assert(oldLength == data.length,
      'List element marked go must be distinct (no duplicates)');

  for (Map a in data) {
    // ignore: deprecated_member_use_from_same_package
    bool preSelected = selectModel.selectedItens != null &&
        // ignore: deprecated_member_use_from_same_package
        selectModel.selectedItens!
            .any((element) => element == a[selectModel.id]);
    if (!preSelected) {
      preSelected = selectModel.preSelected
              ?.any((element) => element.id == a[selectModel.id]) ==
          true;
    }
    //caso nao seja pré-selecionado ou a regra é exibir os pre-selecionados
    if (preSelected == false || selectModel.showPreSelected == true) {
      ItemSelectTable itemSelect =
          ItemSelectTable(strings: Map<String, dynamic>());
      for (Line line in selectModel.lines) {
        // caso seja uma lista
        if (line.listKeys != null) {
          String lineValue = "";
          for (Map map2 in a[line.key]) {
            for (Line linha2 in line.listKeys!) {
              var ret = map2.getLineValue(linha2.key);
              if (linha2.formatData != null) {
                ret = linha2.formatData!
                    .formatData(ObjFormatData(data: ret, map: map2));
              }
              lineValue += '$ret, ';
            }
          }
          if (lineValue.isNotEmpty) {
            //remove a ultima virgula
            lineValue = lineValue.substring(0, lineValue.length - 2);
          }
          itemSelect.strings[line.key] = lineValue;
        } else {
          itemSelect.strings[line.key] = a.getLineValue(line.key);
        }
      }

      /// Caso a fonte indique um id, pega dela, se não, pega do modelo
      if (a[id] == null && !UtilsPlatform.isRelease) {
        throw ('Id null ${selectModel.title}');
      }
      itemSelect.id = a[this.id ?? selectModel.id];
      itemSelect.isSelected = preSelected;
      itemSelect.object = a;
      itemSelect.position = offset++;

      lista.add(itemSelect);
    }
  }
  return lista;
}