Я думаю, что поток состояния аутентификации в родительском StreamBuilder
должен работать?На мой взгляд, это был бы самый хороший способ.
Можно добавить новый поток в свой блок, например Stream<String> get doNavigate
, и добавлять к нему события, когда вы хотите, чтобы виджет перемещался куда-то.Вы можете думать о навигационных действиях как о еще одном выходном потоке из вашего блока.
Еще один вариант - расширить область действия isLoading
, включив в нее информацию, такую как статус входа в систему.У вас может быть перечисление со всеми возможными состояниями, такими как:
enum Status { signedOut, loading, signedIn }
, а затем выставить его из своего блока вместо просто состояния загрузки:
class EventBloc {
// ...
Stream<Status> get status => _statusSubject.stream;
final _statusSubject = BehaviorSubject<Status>(seedValue: Status.signedOut);
EventsBloc() {
_signupController.stream.listen((user) async {
_statusSubject.add(Status.loading);
final firebaseUser = await firebaseAuth.createUserWithEmailAndPassword(
email: user.email,
password: user.password,
);
Firestore.instance.collection('user').document().setData(
{'email': user.email, 'phone': user.phoneNumber, 'name': user.name});
_statusSubject.add(Status.signedIn);
});
}
}```