Значение, полученное при прослушивании потока, не обновляющего переменную класса - PullRequest
0 голосов
/ 03 августа 2020

У меня есть простой класс под названием UserProvider, который прослушивает поток пользователя при инициализации, а затем обновляет переменную currentUser до значения, полученного из потока.

Проблема в том, по какой-то странной причине, когда Я установил для currentUser значение, полученное из потока, оно не обновляется в классе. Обновляется только методом userStream.listen.

Как это исправить?

class UserProvider extends ChangeNotifier {
  User currentUser;

  UserProvider() {
    this.listenToUserStream();
  }

  void listenToUserStream() {
    FirebaseAuth.instance.onAuthStateChanged.listen((FirebaseUser firUser) {
      if (firUser != null) {
        Stream<User> userStream = UserService().getUserInfoAsStream();
        userStream.listen((event) {
          this.currentUser = event;
          print(currentUser); // prints instance of User;
          notifyListeners();
        });
      } else {
        this.currentUser = null;
      }
      print(currentUser); // prints null;
      notifyListeners();
    });
  }
}
...