es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Migrando mi aplicación bloc a null safety. Error: ‘AssignmentBloc’ no se ajusta a la restricción ‘BlocBase‘ del parámetro de tipo ‘B’.

Estoy migrando mi aplicación de flutter a null-safety y obtengo este error en mi BlocProvider y BlocBuilder.

‘AssignmentBloc’ no cumple con el límite ‘BlocBase‘ del parámetro de tipo ‘B’.
Prueba a utilizar un tipo que sea o sea una subclase de ‘BlocBase‘.
He revisado las soluciones a problemas similares y parece que ya he hecho lo que sugirieron. Puede que me esté perdiendo algo y necesito ayuda, por favor.

El widget.

class AssignmentScreenWidgetState extends State<assignmentscreenwidget> {
  AssignmentBloc? _bloc;
  bool assignmentAdd = false;

  @override
  void initState() {
    super.initState();
    _bloc = BlocProvider.of<assignmentbloc>(context)
      ..add(FetchEvent(widget.courseId, widget.assignmentId));
  }

  final GlobalKey<assignmentdraftwidgetstate> assignmentDraftWidgetState =
      GlobalKey<assignmentdraftwidgetstate>();

  @override
  Widget build(BuildContext context) {
    return BlocListener<assignmentbloc, assignmentstate="">( // donde están los errores
      bloc: _bloc,
      listener: (BuildContext context, AssignmentState state) {
        if (state is CacheWarningAssignmentState) {
          showDialog(
              context: context, builder: (context) => WarningLessonDialog());
        }
      },
      child: BlocBuilder<assignmentbloc, assignmentstate="">( // donde están los errores
          builder: (context, state) {
        return Scaffold(
        ...

El bloc.

class AssignmentBloc extends Bloc<assignmentevent, assignmentstate?=""> {
  final AssignmentRepository _assignmentRepository;
  final CacheManager cacheManager;

  AssignmentBloc(this._assignmentRepository, this.cacheManager) : super(null);

  @override
  AssignmentState get initialState => InitialAssignmentState();
  ...

El estado.

@immutable
abstract class AssignmentState {}

class InitialAssignmentState extends AssignmentState {}

class LoadedAssignmentState extends AssignmentState {
    final AssignmentResponse assignmentResponse;

LoadedAssignmentState(this.assignmentResponse);
}

class ErrorAssignmentState extends AssignmentState {}
class CacheWarningAssignmentState extends AssignmentState {}

Por favor, toda la ayuda que pueda obtener es muy apreciada.</assignmentevent,></assignmentbloc,></assignmentbloc,>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la clase AssignmentBloc no está ampliando la clase BlocBase <assignmentstate>. Para solucionar este problema, cambie la firma de la clase para ampliar la clase BlocBase <assignmentstate> de la siguiente manera:

    class AssignmentBloc extends Bloc<assignmentevent, assignmentstate="">
        implements BlocBase<assignmentstate> {
      // Implemente los métodos y propiedades necesarios.
    }
    

    Esto asegurará que AssignmentBloc se ajuste al límite de los parámetros de tipo BlocProvider y BlocBuilder.</assignmentevent,>

Comments are closed.