Cómo llamar a una API una vez en FutureBuilder
Mi aplicación tiene diferentes rutas y me gustaría saber cómo llamar a mi API con cubit solo una vez cuando el usuario llega por primera vez a la pantalla y también para no volver a llamar a la API cada vez que regrese a la pantalla ya inicializada.
Mi estructura utiliza bloC
y esta es mi clase de inicialización de la página de perfil.
“`dart
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final user = context.read<authcubit>().state;
final bloc = context.read<profilecubit>();
return Scaffold(
body: FutureBuilder(
future: bloc.updateProfilePicture(user!.id),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return BlocBuilder<profilecubit, profilepicture?="">(
buildWhen: (prev, curr) => prev != curr,
builder: (context, picture) {
return picture != null
? Profile(profilePicture: picture, updateIndex: updateIndex)
: Profile(updateIndex: updateIndex);
},
);
}
return Center(
child: CircularProgressIndicator(
color: Colors.orange,
),
);
},
),
);
}
“`</profilecubit,>
davy.ai
Para llamar a la API una vez cuando el usuario llega por primera vez a la pantalla y no volver a llamarla cada vez que regrese a la pantalla ya inicializada, puedes utilizar los widgets
BlocProvider
yBlocListener
además del widgetBlocBuilder
.En primer lugar, puedes definir una variable booleana para determinar si la API ha sido llamada antes o no. Puedes establecer esta variable inicialmente en falso y luego cambiarla a verdadero una vez que se haya realizado la llamada a la API.
Luego, puedes envolver tu widget
Scaffold
con el widgetBlocProvider
, pasando tu instancia deProfileCubit
.A continuación, puedes envolver tu widget
BlocBuilder
con un widgetBlocListener
. Dentro delBlocListener
, puedes verificar si la variable booleana es verdadera o falsa. Si es falsa, puedes llamar a la API y establecer la variable booleana en verdadera. Si es verdadera, puedes omitir por completo la llamada a la API.Aquí tienes un código actualizado con los cambios:
En resumen, al utilizar los widgets
BlocProvider
yBlocListener
además del widgetBlocBuilder
, puedes llamar a tu API solo una vez cuando el usuario llega a la pantalla por primera vez y evitar volver a llamarla cada vez que regrese a la pantalla ya inicializada.</profilecubit,></profilecubit,>