Взаимодействие с блоком только через евенты context.read<SplashBloc>().add(const InitSplashEvent());
на этом шаге блок ещё не создан
Ну ты вызываешь контекст, где не будет этот блок никогда при таком коде
это и так ясно, я спрашиваю как обойти, криво как-то
это тоже очевидно, прост думал, может есть варик нормальный, а не хрень
BlocProvider(create: () => YourBloc())..add(YourBlocEvent.init())
мне нужно после первого кадра, тут успевает до первого
Почему после первого кадра? Что там за бизнес логике такая? Это точно бизнес логика а не Юи логика?
На твоём скрине четко видно что у тебя провайдер внутри дерева твоего ж виджета. Если ты хочешь дергать инит блока в initState, он уже обязан быть в контексте выше
Если для тебя это хрень - почитай чуть чуть о InheretedWidget и поймёшь что это единственный путь 😜
Не обязан Уже обсуждали - инстанс блока как свойство стейта и в инитстейте прокидывание евента - не преступление как выяснилось
Таки в конструкторе делают зачастую
Зачем блок передавать через конструктор?
Так это не меняет факта что декларация будет на уровне выше. А по дереву просто BlocProvider.value
Я про то что в конструкторе блока добавляют ивент на начало инициализации... типа само инициализирующийся блок
А где уровень выше? Чел содает инстанс в текущем виджете, по твоему этот блок УЖЕ прям обязан быть "выше"?
Ему надо было к тому же метод у блока вызвать
То есть блок напрямую будет зависеть от первого евента, найс
Почитай мое сообщение ещё раз выше, как я ему писал 😉
Почитай мое первое сообщение конкретно тебе, еще раз
То что ты делаешь Construction()..addEvent(...) Или внутри блока Construction():super(stete) { addEvent(...) }
А в смысле НА конструкторе Тогда ок
Обсуждают сегодня