authStateChanges
- Flutter kursu
- İleri seviye
- Ders 19/69
- 4 dk
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
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
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<User?>
- User?
- Stream<User?> 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
auth.____().listen((user) {
print(user?.email);
});
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 |