CodeBlanks Logo Icon CodeBlanks

signInWithEmailAndPassword

signInWithEmailAndPassword ile giriş yapmayı öğrenirsin.

signInWithEmailAndPassword

signInWithEmailAndPassword metodu, kayıtlı bir kullanıcıyla oturum açar. E-posta ve şifre doğruysa UserCredential döner ve currentUser güncellenir. Şifre yanlışsa FirebaseAuthException fırlatılır.

final cred = await auth.signInWithEmailAndPassword(
  email: 'a@b.com',
  password: '123456',
);

signOut metodu

signOut metodu oturumu kapatır ve currentUser null olur. Kullanıcı uygulamayı terk ettiğinde veya başka bir hesaba geçmek istediğinde bu metodu çağırırsın. Çağrı asenkron olduğu için await ile beklenir.

await auth.signOut();
print(auth.currentUser); // null

Uygulama Giriş yap ve çık

Auth örneğini al, signInWithEmailAndPassword ile giriş yap, e-postayı yazdır. Sonra signOut çağır, currentUser'ı kontrol et ve yoksa 'yok' yazdır.

Başlangıç kodu

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

class UserCredential {
  final User user;
  UserCredential(this.user);
}

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

  Future<UserCredential> signInWithEmailAndPassword({
    required String email,
    required String password,
  }) async {
    _user = User(email);
    return UserCredential(_user!);
  }

  Future<void> signOut() async {
    _user = null;
  }
}

void main() async {
  // giriş metodunu çağır, e-postayı yazdır
  // çıkış metodunu çağır, 'yok' yazdır
}

Örnek çözüm

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

class UserCredential {
  final User user;
  UserCredential(this.user);
}

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

  Future<UserCredential> signInWithEmailAndPassword({
    required String email,
    required String password,
  }) async {
    _user = User(email);
    return UserCredential(_user!);
  }

  Future<void> signOut() async {
    _user = null;
  }
}

void main() async {
  final auth = FirebaseAuth.instance;
  final cred = await auth.signInWithEmailAndPassword(
    email: 'a@b.com',
    password: '123456',
  );
  print(cred.user.email);
  await auth.signOut();
  print(auth.currentUser?.email ?? 'yok');
}

Beklenen çıktı

a@b.com
yok

Soru ve cevaplar

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

1 signInWithEmailAndPassword yanlış şifre verince ne olur?

  • Uygulama kapanır
  • Boş UserCredential döner
  • null döner
  • FirebaseAuthException fırlatılır Doğru cevap

Açıklama: Şifre yanlış olduğunda FirebaseAuthException fırlatılır; null veya boş UserCredential dönmez.

2 Giriş metodunu çağır

Soru
final cred = await auth.____(
  email: 'a@b.com',
  password: '123456',
);
Cevap
final cred = await auth.signInWithEmailAndPassword(
  email: 'a@b.com',
  password: '123456',
);

Açıklama: Giriş yapmak için signInWithEmailAndPassword çağrılır; e-posta ve şifre parametreleri zorunludur.

3 Giriş ve çıkış parçaları

Kavram Anlamı
signInWithEmailAndPassword Giriş yapar
signOut Oturumu kapatır
UserCredential Giriş sonucu
currentUser Mevcut kullanıcı

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