#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);
и проверить еще раз?