I'm developing an app with an infinite scroll. My scroll is returned inside futurebuilder.
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: VideoService.getFeed(page: page),
builder: (context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
/*print(snapshot.data);
print(page.toString());*/
_tabController = TabController(
length: (snapshot.data.length + items.length), vsync: this);
_tabController.addListener(_tabControllerListener);
items.addAll(snapshot.data);
items.removeWhere((element) => (element == null));
return getBody();
}
return Center(child: CircularProgressIndicator());
},
);}
I use tabcontroller to decide when to call my API:
_tabControllerListener() {
if ((_tabController.length - 1) == _tabController.index) {
/*_tabController.index = _tabController.index;*/
setState(() {
// _tabController = _tabController;
page = page + 1;
_tabController = _tabController;
//items = items;
});
} }
However the build function is called multiple times. How do I avoid this?