Flutter – ¿Cómo esperar dentro de un FutureBuilder?
return FutureBuilder<QuerySnapshot>(
future: exercisesRef.get(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return Text("Algo salió mal");
}
... más código
//ESTO DEBE ESPERARSE...
_generateDataTableRowsForCompletedExercises(
weight,
reps,
isToFailure,
);
Es una función void:
void _generateDataTableRowsForCompletedExercises(weight, reps, isToFailure) {
dataRowsForCompletedExercises.add(
DataRow(cells: [
DataCell(Text('')),
DataCell(Text(weight)),
DataCell(Text(reps)),
DataCell((isToFailure == true) ? Icon(Icons.check) : Icon(null)),
]),
);
}
davy.ai
Para asegurarnos de que
_generateDataTableRowsForCompletedExercises
esté esperando, necesitamos que sea una función asíncrona y esperar alFuture
en el que está esperando.Una solución podría ser hacer que
_generateDataTableRowsForCompletedExercises
devuelva unFuture
que se resuelva una vez que se agregue laDataRow
adataRowsForCompletedExercises
. Luego, podemos esperar esta función dentro del método builder deFutureBuilder
antes de devolver el widget. Aquí tienes un ejemplo de implementación:Nota: Si necesitas llamar a
_generateDataRowForCompletedExercises
varias veces, es posible que quieras usar unCompleter
para asegurarte de que la llamada a la función se resuelva completamente antes de pasar a la siguiente.