Flutter -Как использовать ScrollController, чтобы перейти к нижней части списка после получения данных из firebase с помощью StreamBuilder? - PullRequest
1 голос
/ 01 ноября 2019

Каков наилучший способ использования ScrollController в списке для прокрутки до конца списка после того, как представление списка будет отображать данные из streambuilder с использованием потока запросов firestore?

Как лучше всего использовать scrollcontroller. метод jumpto?

// initialisation
ScrollController scrollController=ScrollController();

// inside initstate() with 500ms delay - not working
scrollController.jumpTo(scrollController.position.maxScrollExtent);

Expanded(
                child: StreamBuilder<DocumentSnapshot>(
                    stream: Firestore.instance
                        .collection('Data')
                        .document(widget.dataID)
                        .snapshots(),
                    builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
                      print("Called");
                      if (!snapshot.hasData) {
                        return Text("Loading");
                      }
                      var info= snapshot.data.data;
                      if (info!= null &&
                          info["messages"] != null &&
                          info["messages"].length > 0 &&
                          userList.length > 0) {
                        return ListView.builder(
                          controller: scrollController,
                          itemCount: info["challengeReplies"].length,
                          itemBuilder: (BuildContext context, int index) {

                            return ChallengeReplyListItem(
                                currentUserID: widget.currentUserID,
                                messagesType: info["messages"][index]["messagesType"],
                                messagesContent: info["messages"][index]["messagesContent"],
                          },
                        );
                      } else if (isLoading) {
                        return Center(
                          child: CircularProgressIndicator(),
                        );
                      } else {
                        return Center(child: Text("No Data Found",style: TextStyle(color: Colors.blueGrey,fontSize: 22,fontWeight: FontWeight.w500),));
                      }
                    }),
              ),

Предложите решение или подходящий патч для проблемы, если кто-нибудь знает.

Спасибо.

...