Transformar eventos congelados en BLoC
Me gustaría saber si hay una manera de configurar correctamente los eventos de BLoC utilizando la biblioteca Freezed. El problema surge cuando se quiere agregar un transformador en los eventos seleccionados.
Consideremos este escenario:
class CustomState {}
@freezed
class CustomEvent with _$CustomEvent {
const factory CustomEvent.regularEvent() = _RegularEvent;
const factory CustomEvent.eventWithTransformer() = _EventWithTransformer;
}
class CustomBloc extends Bloc<CustomEvent, CustomState> {
CustomBloc(CustomState initialState) : super(initialState) {
on<CustomEvent>((event, emitter) {
//manejar eventos
},
transformer: transformOnlyEventWithTransformer());
}
}
¿Cómo puedo agregar un transformador solo para “eventWithTransformer”?
on<CustomEvent.regularEvent>((event, emitter) {
//esto no funcionará ya que “CustomEvent.regularEvent” no es un tipo
}
Además, no puede haber dos “on<>” con el mismo evento en un solo bloc, por lo que lo siguiente tampoco funcionará
on<CustomEvent>((event, emitter) {
event.whenOrNull(
regularEvent: () => // manejar evento
)
}
on<CustomEvent>((event, emitter) {
event.whenOrNull(
eventWithTransformer: () => // manejar evento
)
}, transformer: transformOnlyEventWithTransformer());
Háganme saber si hay alguna solución para este problema. Si no la hay, sería bueno agregar esto como una solicitud de función.
davy.ai
Desafortunadamente, no es posible agregar una transformación solo para un evento específico en un BLoC utilizando la biblioteca Freezed. Como has mencionado, no hay una forma directa de hacer esto y no es posible agregar dos métodos
on
con el mismo evento en un solo BLoC.Sin embargo, puedes solucionar esto creando un nuevo evento específico para la transformación y utilizando ese en el método
on
. Aquí tienes un ejemplo:En este enfoque, creas un nuevo evento llamado
TransformedEvent
y lo utilizas en el métodoon
junto con la transformación. De esta manera, puedes especificar una transformación para un evento específico sin afectar a otros eventos.Si esta solución no se adapta a tus necesidades, puedes enviar una solicitud de funcionalidad a la biblioteca Freezed para agregar soporte para agregar transformaciones a eventos específicos.</customevent.transformedevent></customevent.eventwithtransformer></customevent.regularevent></customevent,>