Migrating my bloc app to null safety. error: 'AssignmentBloc' doesn't conform to the bound 'BlocBase<AssignmentState>' of the type parameter 'B'


I’m migrating my flutter app to null-safety and I get this error on my BlocProvider and BlocBuilder.

'AssignmentBloc' doesn't conform to the bound 'BlocBase<AssignmentState>' of the type parameter 'B'.
Try using a type that is or is a subclass of 'BlocBase<AssignmentState>'.

I’ve checked the solutions to similar problems and it seems to me like I’ve already done what they suggested. I may be missing something though and I need help, please.

The widget.

class _AssignmentScreenWidgetState extends State<_AssignmentScreenWidget> {
  AssignmentBloc? _bloc;
  bool assignmentAdd = false;

  void initState() {
    _bloc = BlocProvider.of<AssignmentBloc>(context)
      ..add(FetchEvent(widget.courseId, widget.assignmentId));

  final GlobalKey<AssignmentDraftWidgetState> assignmentDraftWidgetState =

  Widget build(BuildContext context) {
    return BlocListener<AssignmentBloc, AssignmentState>( // where the errors are
      bloc: _bloc,
      listener: (BuildContext context, AssignmentState state) {
        if (state is CacheWarningAssignmentState) {
              context: context, builder: (context) => WarningLessonDialog());
      child: BlocBuilder<AssignmentBloc, AssignmentState>( // where the errors are
          builder: (context, state) {
        return Scaffold(

The bloc.

class AssignmentBloc extends Bloc<AssignmentEvent, AssignmentState?> {
  final AssignmentRepository _assignmentRepository;
  final CacheManager cacheManager;

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

  AssignmentState get initialState => InitialAssignmentState();

The state.

abstract class AssignmentState {}

class InitialAssignmentState extends AssignmentState {}

class LoadedAssignmentState extends AssignmentState {
    final AssignmentResponse assignmentResponse;


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

Please, all the help I can get is very appreciated.


You _bloc variable isn’t actually nullable. It’s just not available in the constructor.

So make it late instead of nullable:

late AssignmentBloc _bloc;

That should solve your problems down the road, because now the type parameter of your bloc is no longer AssignmentBloc? but a real AssignmentBloc.

Answered By – nvoigt

Answer Checked By – Candace Johnson (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *