Как загрузить больше данных из json запроса по параметру pageNumber во флаттере? - PullRequest
0 голосов
/ 26 мая 2020

Как загрузить больше данных по pageNumber, я использую scrollController, чтобы узнать, до последнего экрана и получить больше данных, но добавить l oop, чтобы получить больше данных, но данные повторяются и не получают данные, указанные c на следующей странице, так что это это функция apiserivce: -

  Future<APIResponse<SeriesResult>> getSeriesSection(int pageNumber) async {
Map seriesData = {'portalId': 'primax', 'pageNumber': pageNumber};
var bodySeriesData = json.encode(seriesData);
try {
  final response = await http.post(url + '/series/page',
      headers: headers, body: bodySeriesData);
  if (response.statusCode == 200) {
    final SeriesResult results = seriesResultFromJson(response.body);



    return APIResponse<SeriesResult>(data: results);
  } else {
    return APIResponse<SeriesResult>(
        error: true, errorMessage: 'An error occured');
  }
} catch (error) {
  return APIResponse<SeriesResult>(
      error: true, errorMessage: 'An error occured');
}

} и эта функция initState

void initState () {super.initState ();

_fetchSeriesData();

_scrollController.addListener(() async {
  if (_scrollController.position.pixels ==
      _scrollController.position.maxScrollExtent) {
    pageNumber++;
    _fetchSeriesData();
  }
});

}

 _fetchSeriesData() async {
setState(() {
  _isLoading = true;
});

_apiResponse = await serivce.getSeriesSection(
  pageNumber,
);
// if (_apiResponse.data.results.length != 0) {
  for (int i = 0; i < 10; i++) {
    _apiResponse.data.results.add(_apiResponse.data.results[i]);
  }
// }

setState(() {
  _isLoading = false;
});

}

...