Flutter. При запуске приложения, как лучше запросить асинхронные данные ? [Best Practices]

Сейчас работаю над приложением и при запуске необходимо получить по API userId, а затем подписаться на сокеты:

final userId = await fetchUser();
subscribeSocket(userId)

Трудность в том, что до инициализации провайдера, т.е. в main методе нельзя вызывать, т.к. не смогу сохранить информацию о user. Если в FutureBuilder, то получу повторный вызов подписки несколько раз (видимо из-за рендера). Как вариант intialState, но у меня сомнения в правильности.


Ответы (2 шт):

Автор решения: Developer

initState у State нормальный вариант, но лучше переходить на bloc

→ Ссылка
Автор решения: Daniil

Если вам нужно вызывать ф-ию при запуске - initState() шикарный вариант. Опять же, как уже было в ответе выше - bloc, будет лучшим решением (если он нужен). Как говорил дядюшка Боб,

не стоит использовать чистую архитектуру там, где она не нужна.

→ Ссылка