Я придумал) у меня есть фабрика блоков, фабрика экранов. Фабрика экранов при создании нового экрана оборачивает его в блок провайдер. И там короче можно решить новый это блок или где то уже в графе используемый)
в итоге заюзал BlocProvider.value, оказывается можно создать на одном экране BlocProvider через create, записать его в переменную, и пропихнуть в другой роут через value