#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(!значение). Извините за это.