Flutter содержит всегда возвращаемое значение true

#flutter

#flutter

Вопрос:

Я могу что-то не понять.

_thisEvent.eventKidsPayed — это список, содержащий строки идентификатора документа. kidsSnapshot.data.documents[index].documentId выдаст нам строку.

_thisEvent.eventKidsPayed в настоящее время ПУСТ, в списке ничего нет.

 bool _payed = false;
if (_thisEvent.eventKidsPayed.contains(kidsSnapshot
    .data.documents[index].documentID)) {
       _payed = true;
    }
  

Он всегда возвращает true . Почему ?

Комментарии:

1. Вы уверены, что оно пустое? Предлагаю вам поставить пару операторов печати перед «if», чтобы показать содержимое thisEvent.eventKidsPayed и kidsSnapshot.data.documents[index].documentId

2. возможно, вы вводите bool _payed = false; build метод inside. Поместите его вне build метода.

3. Найдено решение проблема была где-то в другом месте кода (я разместил ее как ответ здесь). Спасибо за ваше время, ребята.

Ответ №1:

Вам нужно использовать setState для изменения bool. Следуйте приведенному ниже коду. Вам нужно использовать StatefulWidget для использования setState .

 bool _payed = false;
if (_thisEvent.eventKidsPayed.contains(kidsSnapshot
    .data.documents[index].documentID)) {

 setState(() {
  _payed = true;
 });
}
  

Комментарии:

1. я не пытался отобразить bool на экране, а в виде печати. Если я печатаю результат после IF, он всегда возвращает мне true. Даже если список пуст, а длина строки составляет 100 символов. Вот чего я не понимаю.

2. Найдено решение проблема была где-то в другом месте кода (я разместил ее как ответ здесь). Спасибо за ваше время, Салим.

Ответ №2:

Проблема была с моей вставкой и удалением, а не с my .contains Извините всех за беспокойство и потерянное время.

Я делал это по ошибке (это не код, а логика)

 If(value) //true if contains
  array remove
else
  array union
  

Так что это было совершенно неправильно, я исправил выполнение If(!значение). Извините за это.