Infinite loop on using FutureBuilder with API call
You're creating Future
object on every rebuild of the widget. And since you're calling setState
inside your setData
method, it triggers a rebuild recursively.
To solve this problem you have to keep a reference to the Future
object. And use that reference for the FutureBuilder
then it can understand that it is the previously used one.
E.g:
Future<List<Task>> _tasks;
@override
void initState() {
_tasks = getAllTasks();
super.initState();
}
And in your widget tree use it like that:
Expanded(
child: FutureBuilder(
future: _tasks,
initialData: [],
builder: (context, snapshot) {
return createTasksListView(context, snapshot);
}),
),