Что я пытаюсь сделать Я создаю список, включая строку и столбец, которые пользователь нажимает в ListView. Затем я воспользуюсь этим списком для запоминания выбора пользователя и изменения цвета выборов через setState.
Что уже сделано
Мой код функции списка как ниже, и это работает отлично. Добавляет когда пользователь нажимает, удаляет когда пользователь untap et c.
List listTappedButtons(rowIndex, buttonIndex) {
int isExist = 0;
int rowExist = 0;
for (int j = 0; j < tappedRowButtonIndex.length; j++) {
//if the element is exist in the list or not
if (tappedRowButtonIndex[j][0] == rowIndex &&
tappedRowButtonIndex[j][1] == buttonIndex) isExist++;
//if the row is selected before or not
if (tappedRowButtonIndex[j][0] == rowIndex &&
tappedRowButtonIndex[j][1] != buttonIndex) rowExist++;
}
if (isExist == 0 && rowExist == 0) {
tappedRowButtonIndex.add([rowIndex, buttonIndex]);
} else if (isExist != 0 && rowExist == 0) {
for (var i = 0; i < tappedRowButtonIndex.length; i++) {
if (tappedRowButtonIndex[i][0] == rowIndex &&
tappedRowButtonIndex[i][1] == buttonIndex)
tappedRowButtonIndex.removeAt(i);
}
} else {
for (var i = 0; i < tappedRowButtonIndex.length; i++) {
if (tappedRowButtonIndex[i][0] == rowIndex) {
tappedRowButtonIndex.removeAt(i);
tappedRowButtonIndex.add([rowIndex, buttonIndex]);
}
}
}
print('list: ' + tappedRowButtonIndex.toString());
return tappedRowButtonIndex;
}
Проблема в том, что когда я вызываю его в setState, мне нужно проверить, выбран ли элемент, который генерирует builderItem, раньше или нет, а затем изменить цвет. Вот соответствующая часть кода. Я пробовал содержит и listEquals, но оба они не работали. Есть идеи как это решить?
AppButton.buildAppButton(
context,
AppButtonType.BETSELECTION,
matchList[index][5],
kCategoryButtonDimensions,
color:
listEquals(tappedRowButtonIndex, [index, 2])
? Colors.yellow
: Colors.white,
onPressed: () {
tappedRowIndex = index;
tappedButtonIndex = 2;
setState(() {
listTappedButtons(
tappedRowIndex, tappedButtonIndex);
});
},
),