void applyFilter(String query) {
tableRow();
if (query.isEmpty) {
setState(() {
tableRow();
});
} else {
List<DataRow> filteredRows = [];
for (int i = 0; i < rows.length; i++) {
for (int j = 0; j < rows[i].cells.length; j++) {
if (data.values
.elementAt(i)
.values
.elementAt(j)
.toString()
.toLowerCase()
.contains(query.toLowerCase()) &&
selectedList.contains(
data.values.elementAt(i).keys.elementAt(j))) {
// print(
// 'data i: ${data.values.elementAt(i).values.elementAt(j)}');
// print('rows i: ${rows[i].cells[j].child}');
// filteredRows.add(rows[i]);
// print(
// 'data ${data.values.elementAt(i).values.elementAt(j)}');
// print('rows ${rows[i].cells[j].child}');
print(data.values.elementAt(0));
print(rows[0]);
filteredRows.add(rows[i]);
// non va tanto bene che invia le righe sarebbe da correggere con l'invio diretto della variabile data
// non lo fa nemmeno castare perche sarebbe da ricreare la datarow
break;
}
}
}
setState(() {
rows.clear();
rows.addAll(filteredRows);
});
}
}
I'm trying to insert data.values.elementAt(i) in filteredRows.add(HERE) to replace filteredRows.add(rows[I]) because the values in the map that i created form firebase Streambuilder snapshot is in a different order than the DataCells in the rows.
Actually in this mode the code works but I can't use the key parameters in data variable data.values.elementAt(i).keys.elementAt(j) because data and rows don't contains the elements in the same order.