CodeBlanks Logo Icon CodeBlanks

authStateChanges

authStateChanges ile oturum değişikliğini dinlemeyi öğrenirsin.

authStateChanges nedir?

authStateChanges metodu, oturum durumu değiştiğinde olay yayan bir Stream<User?> döndürür. Kullanıcı giriş yaptığında User, çıkış yaptığında null yayılır. Uygulama başlangıcında da mevcut durumu bir kez yaydığı için oturum kontrolü için idealdir.

auth.authStateChanges().listen((user) {
  print(user?.email ?? 'misafir');
});

Akışı dinlemek

Akışı listen ile dinlediğinde, her oturum değişikliğinde callback çağrılır. Bu callback içinde sayfa geçişi, snackbar veya widget güncellemesi gibi yan etkiler yapılır. Otomatik yeniden inşa için StreamBuilder ile de kullanılabilir.

auth.authStateChanges().listen((user) {
  if (user == null) {
    // giriş ekranına git
  } else {
    // ana ekrana git
  }
});

Uygulama Durum akışını dinle

Auth örneğini al, authStateChanges akışını listen ile dinle. user null ise 'yok' yazdır. Dinlemeyi başlattıktan sonra 10 milisaniye bekle.

Başlangıç kodu

main.dart
class User {
  final String email;
  User(this.email);
}

class FirebaseAuth {
  static final FirebaseAuth instance = FirebaseAuth._();
  FirebaseAuth._();
  User? _user;

  Stream<User?> authStateChanges() async* {
    yield _user;
  }
}

void main() async {
  // durum akışını dinle
  // kullanıcı null ise 'yok' yazdır
  // 10ms bekle
}

Örnek çözüm

main.dart
class User {
  final String email;
  User(this.email);
}

class FirebaseAuth {
  static final FirebaseAuth instance = FirebaseAuth._();
  FirebaseAuth._();
  User? _user;

  Stream<User?> authStateChanges() async* {
    yield _user;
  }
}

void main() async {
  final auth = FirebaseAuth.instance;
  auth.authStateChanges().listen((user) {
    print(user?.email ?? 'yok');
  });
  await Future.delayed(Duration(milliseconds: 10));
}

Beklenen çıktı

yok

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 authStateChanges ne döndürür?

  • Future&lt;User?&gt;
  • User?
  • Stream&lt;User?&gt; Doğru cevap
  • Widget

Açıklama: authStateChanges bir Stream<User?> döndürür; oturum durumu her değiştiğinde yeni bir değer yayılır.

2 Durum akışını dinle

Soru
auth.____().listen((user) {
  print(user?.email);
});
Cevap
auth.authStateChanges().listen((user) {
  print(user?.email);
});

Açıklama: authStateChanges, oturum durumu değişince olay yayan akışı döndürür; listen ile dinlenir.

3 authStateChanges parçaları

Kavram Anlamı
authStateChanges Durum değişim akışı
Stream<User?> Dönüş türü
listen Akışı dinler
User? Oturum yoksa null

İleri seviye bölümündeki tüm dersler