generateList method
List<ItemSelectTable>
generateList(
- List<
Map< data,String, dynamic> > - int offset,
- 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;
}