Выражение имеет тип ‘void’, поэтому его значение не может быть использовано — Flutter Dart не может добавить пользовательский объект в список в цикле for

#list #flutter #dart #add

#Список #flutter #dart #Добавить

Вопрос:

Мне нужно создать новый список ‘filteredSlots’, в котором будут слоты из списка ‘slotlist’, который имеет свою доступность, и для его доступности последовательных слотов также установлено значение true.

Но я получаю сообщение об ошибке для add(). Пожалуйста, помогите мне решить эту проблему

 class Slot {
  String time;
  bool isAvailable;

  Slot({this.time, this.isAvailable});
}

class FilterSlots {
  List<Slot> slotlist = [
    Slot(time: '10:00', isAvailable: true),
    Slot(time: '10:30', isAvailable: false),
    Slot(time: '11:00', isAvailable: true),
    Slot(time: '11:30', isAvailable: true),
    Slot(time: '12:00', isAvailable: true),
    Slot(time: '12:30', isAvailable: false),
    Slot(time: '13:00', isAvailable: true),
  ];

  List<Slot> filteredSlots = [];

  List<Slot> filterSlots() {
    for (var i = 0; i < slotlist.length - 1; i  ) {
      if ((slotlist[i].isAvailable) amp; (slotlist[i   1].isAvailable)) {
        filteredSlots = filteredSlots.add(slotlist[i]);
      }
    }
    return filteredSlots;
  }
}

//Expected output,

List<Slot> filteredslots = [
  Slot(time: '11:00', isAvailable: true),
  Slot(time: '11:30', isAvailable: true),
];
 

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

1. почему вы не используете метод List.where ?

2. пожалуйста, вы можете объяснить мне, как использовать это для моей проблемы. Я новичок в порхании и метании дротиков

3. dart.dev/codelabs/iterables#фильтрация

4. я не могу передать индекс 1 в операторе where. он показывает ошибку

5. упс, извините, я перепутал, вы тоже используете этот элемент «next» … попробуйте удалить filteredSlots = из цикла

Ответ №1:

создайте bool isAvailable; статическую переменную static bool isAvailable;