Cómo usar BlocBuilder para actualizar un diálogo en Flutter
Tengo un diálogo y lo envuelvo en un BlocBuilder para actualizarlo según el tipo de estado, pero el diálogo solo se construye la primera vez y después de que cambia el estado no se vuelve a construir.
showDialog(
context: context,
builder: (_) {
BlocBuilder<examplecubit, examplestate="">(
bloc: cubit,
builder: (context, state) {
return CustomDialog(
title: "título",
onSave: (File file) {
cubit.uploadImage(file);
},
progress: (state is ExtendedExampleState) ? state.progress : 0,
onDelete: () {},
onCancel: () {
cubit.cancelUploading();
},
);
},
);
},
);
Nota: Es importante utilizar el patrón Bloc en lugar de StateFulBuilder
.</examplecubit,>
davy.ai
Para asegurarnos de que el diálogo se reconstruya después de que el estado haya cambiado, podemos hacer algunas modificaciones a nuestro código:
showDialog
se llame cada vez que cambia el estado. Actualmente, solo se llama una vez cuando se crea inicialmente el diálogo. Para asegurarnos de que se llame cada vez que cambie el estado, podemos moverlo dentro del métodobuilder
delBlocBuilder
. Esto asegurará que el diálogo se reconstruya cada vez que cambie el estado.Necesitamos agregar una propiedad
key
a nuestro widgetCustomDialog
. Esto es necesario para asegurarnos de que Flutter reconozca que el diálogo ha cambiado y necesita reconstruirse. Podemos utilizar el constructorValueKey
y pasar el objetostate
como valor, de esta manera:Con estas modificaciones, nuestro código debería verse así:
Al mover el método
showDialog
dentro del métodobuilder
delBlocBuilder
y agregar una propiedadkey
a nuestro widgetCustomDialog
, podemos asegurarnos de que el diálogo se reconstruya cada vez que cambie el estado. Esto garantizará que nuestra interfaz de usuario se mantenga actualizada con los últimos cambios de estado.</examplecubit,>