Перенос приложения моего блока в нулевую безопасность. ошибка: «AssignmentBloc» не соответствует привязке «BlocBase» параметра типа «B»

#flutter #dart #bloc #state-management #flutter-bloc

#трепетать #дротик #блок #государственное управление #флаттер-блок

Вопрос:

Я переношу свое приложение flutter в режим нулевой безопасности, и я получаю эту ошибку в своем BlocProvider и BlocBuilder.

 'AssignmentBloc' doesn't conform to the bound 'BlocBaselt;AssignmentStategt;' of the type parameter 'B'. Try using a type that is or is a subclass of 'BlocBaselt;AssignmentStategt;'.  

Я проверил решения подобных проблем, и мне кажется, что я уже сделал то, что они предложили. Возможно, я что-то упускаю, и мне нужна помощь, пожалуйста.

Виджет.

 class _AssignmentScreenWidgetState extends Statelt;_AssignmentScreenWidgetgt; {  AssignmentBloc? _bloc;  bool assignmentAdd = false;   @override  void initState() {  super.initState();  _bloc = BlocProvider.oflt;AssignmentBlocgt;(context)  ..add(FetchEvent(widget.courseId, widget.assignmentId));  }   final GlobalKeylt;AssignmentDraftWidgetStategt; assignmentDraftWidgetState =  GlobalKeylt;AssignmentDraftWidgetStategt;();   @override  Widget build(BuildContext context) {  return BlocListenerlt;AssignmentBloc, AssignmentStategt;( // where the errors are  bloc: _bloc,  listener: (BuildContext context, AssignmentState state) {  if (state is CacheWarningAssignmentState) {  showDialog(  context: context, builder: (context) =gt; WarningLessonDialog());  }  },  child: BlocBuilderlt;AssignmentBloc, AssignmentStategt;( // where the errors are  builder: (context, state) {  return Scaffold(  ...    

Блок.

 class AssignmentBloc extends Bloclt;AssignmentEvent, AssignmentState?gt; {  final AssignmentRepository _assignmentRepository;  final CacheManager cacheManager;   AssignmentBloc(this._assignmentRepository, this.cacheManager) : super(null);   @override  AssignmentState get initialState =gt; InitialAssignmentState();  ...  

Государство.

 @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 {}  

Пожалуйста, я очень ценю всю помощь, которую я могу получить.

Ответ №1:

Переменная _bloc на самом деле не может быть обнулена. Это просто недоступно в конструкторе.

Так что сделайте это late вместо того, чтобы обнулять:

 late AssignmentBloc _bloc;  

Это должно решить ваши проблемы в будущем, потому что теперь параметр типа вашего блока больше AssignmentBloc? не является реальным AssignmentBloc .