Почему мой слушатель трепетной прокрутки звонит несколько раз, когда я прокручиваю вниз - PullRequest
0 голосов
/ 15 марта 2020

У меня есть повторяющиеся данные каждый раз, когда я выполняю прокрутку, чтобы получить новые данные, это прекрасно работает, если я выполняю только одну прокрутку в конце документа, но получаю дубликат, когда я выполняю прокрутку более одного раза в конце. Я предполагаю, что мои пользователи могут прокручивать несколько раз, если данные не загружаются вовремя

Future<List<DocumentSnapshot>> getMoreSearchDocuments(lastDocument) async{
    querySnapshot = await Firestore.instance.collection('val').orderBy('dateCreated', descending:true)
       .startAfterDocument(lastDocument).limit(documentLimit).getDocuments();


    return querySnapshot.documents;
  } 

void _scrollListener() async{
      if(_scrollController.offset >=
            _scrollController.position.maxScrollExtent &&
        !_scrollController.position.outOfRange) {
          DocumentSnapshot lastDocument = widget.searchDocuments[widget.searchDocuments.length - 1];
      setState((){
        isLoading = true ;
        print('You are at the end of the document');
      });
      await api.getMoreSearchDocuments(lastDocument)
            .then((documentSnapshots){
              setState(() {
                widget.searchDocuments.addAll(documentSnapshots);  
                isLoading = false;
              });
            })
            .catchError((e) {
          print(e);
      });
    }
  }

@override
  void initState() {
    _scrollController.addListener(_scrollListener);
    super.initState();
  }


SafeArea(
           child: CustomScrollView(
              controller: _scrollController,
              slivers: <Widget>[
                SliverAppBar(
                  title: Text('Rx finder'),
                  actions: <Widget>[
                    IconButton(
                      icon: Icon(Icons.search),
                      onPressed: () =>
                          showSearch(context: context, delegate: SearchListings()),
                          ....................

My Console Date which indicate the data is being fetched twice

I/flutter (25676): You are at the end of the document
I/flutter (25676): Second list
D/ViewRootImpl(25676): ViewPostImeInputStage processPointer 0
I/flutter (25676): You are at the end of the document
I/flutter (25676): Second list

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...