Имеет значение, как вы используете этот поток. await for
начинает слушать пользователя, затем вы выполняете в нем return currentUser;
и нарушаете await for
. Следовательно, он не может продолжать прослушивание потока в будущем.
Вместо return currentUser;
внутри await for
вы можете сделать что-то вроде setState((){this.renderedUser = currentUser;})
, чтобы пользователь, пришедший с сервера, стал визуализированным. Если вы это сделаете, также добавьте if (!mounted) return;
в await for
, чтобы вы перестали его слушать, когда поймете, что находитесь на другом экране.
Лучшей альтернативой может быть использование виджета StreamBuilder
.