В инитстейте задаешь футуру init(),
Далее в билде через futurebuilder дожидается его завершения и из снапшота бд вызываешь метод который возвращает стрим?
Нет, я делаю иначе. Но по Вашей логике, футуру инициализации нужно прокидывать вверх в вызвавшие классы и там дожидаться окончания иницаилизации, так и нужно делать?