У меня приложение с возможностью переключать аккаунты. Есть глобальный блок со стримом, какой аккаунт выбран, если пользователь переключает аккаунт, в стрим летит ивент и в некотором месте, некоторый StreamBuilder внутри пересоздает BlocProvider с другим ключем и уже с данными другого пользователя. Но вот на экране, который использует этот блок я заметил, что в initState Я получил пользователя 1, после переходу на пользователя 2, в build вызывая провайдер уже новый блок, но в поле стейта остался старый.