#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
.