Как получить доступ к элементу внутри списка с помощью singleWhere .. flutter - PullRequest
0 голосов
/ 03 августа 2020

Я использую singleWhere, чтобы проверить, существует ли элемент уже внутри списка во флаттере, но я не могу получить доступ к этому элементу внутри logi c, вот мой код:

if ((invoiceAdditionsList.singleWhere((it) => it.realID == invoiceAdditionInstance.realID,
   orElse: () => null)) !=
   null) {
      print('Already exists! $it');
      } else {
      print('not there');
        }


В строке print('Already exists! $it'); ошибка, здесь нет доступа.

1 Ответ

1 голос
/ 03 августа 2020

Вы можете получить предмет и сохранить его в соответствии с результатом. Поскольку singleWhere() выдает единственный существующий элемент, иначе выдается ошибка. Сделайте что-нибудь вроде этого и дайте мне знать, сработает ли это

var item = invoiceAdditionsList.singleWhere((it) => it.realID == invoiceAdditionInstance.realID, orElse: () => null); 

// and later check that element out
print("Element found $item" ?? "Not there")

Если вас беспокоит получение первого найденного элемента только из списка, вы можете рассмотреть возможность использования firstWhere () , cos singleWhere() выдает ошибку при обнаружении дубликатов или отсутствия элементов. Тот же код, просто firstWhere()

var item = invoiceAdditionsList.firstWhere((it) => it.realID == invoiceAdditionInstance.realID, orElse: () => null);

print("Element found: $item" ?? "Not there");

Это просто фиктивный код для вас, чтобы лучше понять его, используя singleWhere()

void main() {
  List testIndex = [1,3,4,5,6,78,80];
  
  var item = testIndex.singleWhere((it) => it == 120, orElse: () => null); 
  print(item ?? "No item found"); // No item found
}
...