Значение списка не изменяется в цикле dart for - PullRequest
0 голосов
/ 04 мая 2020

У меня есть список логических значений, я хочу изменить значение индекса перикулярной линии, но значение не меняется, код кажется правильным

      List<bool> toggleTemp = [false, false, false, false, false, false, false];

      for (int k = 0; k < toggleTemp.length; k++) {
        print(k.toString() + " " + i.toString() + " " +  toggleTemp[k].toString());

        if (toggleTemp[k] == i) {
          toggleTemp[k] = true;
        } else {
          toggleTemp[k] = false;
        }

      }
      print(toggleTemp.toString());

output

I/flutter (32274): 0 1 false
I/flutter (32274): 1 1 false
I/flutter (32274): 2 1 false
I/flutter (32274): 3 1 false
I/flutter (32274): 4 1 false
I/flutter (32274): 5 1 false
I/flutter (32274): 6 1 false
I/flutter (32274): [false, false, false, false, false, false, false]

Ответы [ 4 ]

2 голосов
/ 04 мая 2020

Вы пытаетесь сравнить boolean с int, который всегда не даст вам true. Вот откуда ваша ошибка.

Надеюсь, это поможет.

1 голос
/ 04 мая 2020

Проблема в вашем условии if, вы сравниваете toggleTemp [k] с i.

Где значение toggleTemp [k] равно bool и false, что означает 0, поэтому каждый раз, когда условие остается ложным. поскольку в вашем списке содержатся все ложные значения.

, если вы хотите сравнить с индексом, выполните следующие условия.

if (k == i) {
1 голос
/ 04 мая 2020
if (toggleTemp[k] == i) {

равно

if (false == 1) {

, поэтому всегда ложно.

1 голос
/ 04 мая 2020

в соответствии с вашим оператором печати значение вашей переменной "i" объявлено как int, т. Е. 1, которое никогда не будет равно значению toggleTemp [k], которое является логическим.

...