Как загрузить больше в Flutter ListView с помощью Flutter graphql - PullRequest
1 голос
/ 05 мая 2020

Мне нужна ваша помощь.

Мой первый результат запроса отображается с помощью виджета ListView. И я вызываю функцию fetchMore (из graphql_flutter) для получения дополнительных результатов. Но вместо того, чтобы просто добавлять новый результат внизу ListView, он кажется refre sh весь виджет. (Он показывает виджет загрузки)

Я очень новичок во Flutter.

Вот конструктор в виджете Query.

builder: (QueryResult result,                                                                                                                                                                                                                                                  
              {VoidCallback refetch, FetchMore fetchMore}) {                                                                                                                                                                                                                             
            if (result.hasException) {                                                                                                                                                                                                                                                   
              return Text(result.exception.toString());                                                                                                                                                                                                                                  
            }                                                                                                                                                                                                                                                                            
            if (result.loading) {                                                                                                                                                                                                                                                        
              return Center(                                                                                                                                                                                                                                                             
                child: CircularProgressIndicator(),                                                                                                                                                                                                                                      
              );                                                                                                                                                                                                                                                                         
            }                                                                                                                                                                                                                                                                            

            List items = result.data['playlistItems']['items'];                                                                                                                                                                                                                          

            String token = result.data['playlistItems']['nextPageToken'];
            token = token ?? "";

            FetchMoreOptions opts = FetchMoreOptions(
                variables: {'nextPageToken': token},
                updateQuery: (previousResultData, fetchMoreResultData) {
                  final List<dynamic> newItems = [
                    ...previousResultData['playlistItems']['items']
                        as List<dynamic>,
                    ...fetchMoreResultData['playlistItems']['items']
                        as List<dynamic>
                  ];

                  fetchMoreResultData['playlistItems']['items'] = newItems;
                  return fetchMoreResultData;
                });

              return Stack(
                children: <Widget>[
                  VideoList(itemCount: items.length, items: items),
                  Align(
                    alignment: Alignment.bottomRight,
                    child: Padding(
                      padding: EdgeInsets.symmetric(
                          vertical: 10.0, horizontal: 10.0),
                      child: FloatingActionButton.extended(
                        onPressed: () {
                          fetchMore(opts);
                        },
                        label: Text("Load More"),
                        icon: Icon(Icons.more),
                      ),
                    ),
                  ),
                ],
              );

Как я могу просто добавить больше результатов в конец списка вместо обновления всего списка?

Что мне не хватает?

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