Ошибка RangeError (индекс) Flutter ListView: недопустимое значение: не входит во включительный диапазон 0 ..19: 20

#flutter #dart #rxdart

#флаттер #dart #rxdart

Вопрос:

У меня есть представление списка с динамической длиной, предоставляемое streambuilder :

 StreamBuilder<List>(
          initialData: [],
          stream: applicants.stream,
          builder: (context, AsyncSnapshot<List> snapshot) {
            return Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: <Widget>[
                  Expanded(
                      child: ListView.builder(
                          controller: _scrollController,
                          itemCount: snapshot.data.length,
                          itemBuilder: (context, index) {  print('length of applicants'  
                                snapshot.data.length.toString());
                            final applicant =
                                snapshot.data.elementAt(index);return Container(applicant.name);}
 

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

 BehaviorSubject<List> applicants = BehaviorSubject<List>.seeded([]);
ScrollController _scrollController = ScrollController();
@override
void initState() {
super.initState();

_scrollController.addListener(() {
  if (_scrollController.position.atEdge) {
    if (_scrollController.position.pixels == 0) {
    } else {
      print('you are at bottom position');
      //Fire event to get more applicants
       applicants.sink
          .add(applicants.value   newApplicants);
    }
  }
});}
 

Проблема в том, что всякий раз, когда я прокручиваю список вниз, он выдает мне эту ошибку:

 The following RangeError was thrown building:
flutter: RangeError (index): Invalid value: Not in inclusive range 0..19: 20
 

Спасибо!

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

1. Не могли бы вы обновить код с помощью вашего itemBuilder?

2. конечный заявитель = snapshot.data.ElementAt(индекс); затем я возвращаю контейнер с именем @ikerfah

3. Что выводится length of applicants внутри вашего itemBuilder до и после прокрутки.

4. он увеличивается правильно

5. Не могли бы вы заменить applicants.sink.add(applicants.value newApplicants); на applicants.sink.add([...(applicants.value), ...newApplicants); и проверить еще раз?