我要实现的目标
我正在尝试从json数据生成一个列表,然后在scrollcontroller到达底部时将下一页数据追加到当前列表中。
问题
当scrollcontroller触底时会生成项目,但它还会在列表中添加一些先前的元素并随机制作重复的项目
例如:https://streamable.com/5n01f
我的密码
List<MovieJson> movielist = [];
ScrollController _scrollController = new ScrollController();
int pageindex = 1;
_MoviePageState() {
fetchdata(pageindex);
}
void initState() {
super.initState();
//SCROLLCONTROLLER LOGIC
_scrollController.addListener(() {
if (_scrollController.position.pixels ==
_scrollController.position.maxScrollExtent) {
pageindex += 1;
print(_scrollController.position.pixels.toString());
setState(() {
fetchdata(pageindex);
});
}
});
}
Future<List<MovieJson>> fetchdata(int index) async {
final response = await http.get('${tmdb.url_v3}' +
'trending/movie/week' + //path_param
'?' + //query_string_options
'${tmdb.api_key_url}' + //api_key=api_key
'&page=' + //page
'$index');
final jsonData = json.decode(response.body);
for (var item in jsonData['results']) {
MovieJson movie = MovieJson.fromJson(item);
movielist.add(movie);
}
return movielist;
}
其余的代码是使用FutureBuild构建ListView的吗?
答案 0 :(得分:0)
添加电影之前,您需要检查电影是否已经存在于列表中。
if(!movielist.contains(movie))
movielist.add(movie);