āĻĢā§āϞāϟāĻžāϰ⧇ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāϪ⧇āϰ āϏāĻžāĻĨ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ

āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒāϟāĻŋāϕ⧇ Firebase-āĻ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύ

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻāϟāĻŋ āύāĻž āĻ•āϰ⧇ āĻĨāĻžāϕ⧇āύ āϤāĻŦ⧇ āĻĢā§āϞāϟāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ Firebase SDK āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ ⧎

āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇ Firebase āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āϝ⧋āĻ— āĻ•āϰ⧁āύ

  1. āφāĻĒāύāĻžāϰ āĻĢā§āϞāĻžāϟāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āĻŽā§‚āϞ āĻĨ⧇āϕ⧇, āĻĒā§āϞāĻžāĻ—āχāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āϚāĻžāϞāĻžāύ:

    flutter pub add firebase_auth
    
  2. āĻāĻ•āĻŦāĻžāϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāϝāĻŧ⧇ āϗ⧇āϞ⧇, āφāĻĒāύāĻžāϰ āĻĢā§āϞāĻžāϟāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĒ⧁āύāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āϰ⧁āύ:

    flutter run
    
  3. āφāĻĒāύāĻžāϰ āĻĄāĻžāĻ°ā§āϟ āϕ⧋āĻĄā§‡ āĻĒā§āϞāĻžāĻ—āχāύ āφāĻŽāĻĻāĻžāύāĻŋ āĻ•āϰ⧁āύ:

    import 'package:firebase_auth/firebase_auth.dart';
    

āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻ•āĻžāϰ⧀ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϕ⧇ āĻāϟāĻŋ Firebase āĻ•āύāϏ⧋āϞ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āχāĻŽā§‡āϞ/āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āϏāĻžāχāύ-āχāύ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝ āϕ⧋āύ⧋ āĻĒāϰāĻŋāϚāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύāĻ•āĻžāϰ⧀āϕ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇ Firebase āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻŦāĻŋāĻ­āĻžāϗ⧇ āϏāĻžāχāύ-āχāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āϝāĻžāύāĨ¤

(āϐāĻšā§āĻ›āĻŋāĻ•) āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻāĻŽā§āϞ⧇āϟāϰ āĻ¸ā§āϝ⧁āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻĒā§āϰ⧋āĻŸā§‹āϟāĻžāχāĻĒ āĻāĻŦāĻ‚ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ

āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ•āϰ⧇ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ•āĻĨāĻž āĻŦāϞāĻžāϰ āφāϗ⧇, āφāϏ⧁āύ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻž āĻĒā§āϰ⧋āĻŸā§‹āϟāĻžāχāĻĒ āĻāĻŦāĻ‚ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŽāύ āϏāϰāĻžā§āϜāĻžāĻŽāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϏ⧇āϟ āĻĒāϰāĻŋāϚāϝāĻŧ āĻ•āϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āϝāĻžāĻ•: āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻāĻŽā§āϞ⧇āϟāϰ āĻ¸ā§āϝ⧁āϟāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ•ā§ŒāĻļāϞ āĻāĻŦāĻ‚ āĻĒā§āϰāĻĻāĻžāύāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāĻšā§āϛ⧇āύ, āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻāĻŦāĻ‚ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āύāĻŋāϝāĻŧāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒāĻžāĻŦāϞāĻŋāĻ• āĻāĻŦāĻ‚ āĻĒā§āϰāĻžāχāϭ⧇āϟ āĻĄā§‡āϟāĻž āϏāĻš āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĄā§‡āϟāĻž āĻŽāĻĄā§‡āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĻ⧇āϖ⧁āύ, āĻŦāĻž āϏāĻžāχāύ-āχāύ UI āĻĄāĻŋāϜāĻžāχāύ⧇āϰ āĻĒā§āϰ⧋āĻŸā§‹āϟāĻžāχāĻĒāĻŋāĻ‚ āĻ•āϰ⧁āύ, āϞāĻžāχāĻ­ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāύ āύāĻž āĻ•āϰ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāĻ“āϝāĻŧāĻž āĻāĻ•āϟāĻŋ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ āϧāĻžāϰāĻŖāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ .

āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻāĻŽā§āϞ⧇āϟāϰ āĻšāϞ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻāĻŽā§āϞ⧇āϟāϰ āĻ¸ā§āϝ⧁āĻŸā§‡āϰ āĻ…āĻ‚āĻļ, āϝāĻž āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒāϕ⧇ āĻāĻŽā§āϞ⧇āĻŸā§‡āĻĄ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϏāĻžāĻŽāĻ—ā§āϰ⧀ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇āϰ āϏāĻžāĻĨ⧇ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•ā§āϟ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧇, āϏ⧇āχāϏāĻžāĻĨ⧇ āϐāĻšā§āĻ›āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āφāĻĒāύāĻžāϰ āĻ…āύ⧁āĻ•āϰāĻŖ āĻ•āϰāĻž āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύāϗ⧁āϞāĻŋ (āĻĢāĻžāĻ‚āĻļāύ, āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻāĻŦāĻ‚ āύāĻŋāϰāĻžāĻĒāĻ¤ā§āϤāĻž āύāĻŋāϝāĻŧāĻŽ)āĨ¤

āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻāĻŽā§āϞ⧇āϟāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻŽāĻžāĻ¤ā§āϰ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āϧāĻžāĻĒ āϜāĻĄāĻŧāĻŋāϤ:

  1. āĻāĻŽā§āϞ⧇āϟāϰ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇ āϕ⧋āĻĄā§‡āϰ āĻāĻ•āϟāĻŋ āϞāĻžāχāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāĻšā§āϛ⧇āĨ¤

  2. āφāĻĒāύāĻžāϰ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϰ āϰ⧁āϟ āĻĨ⧇āϕ⧇, firebase emulators:start āĨ¤

  3. āχāĻ¨ā§āϟāĻžāϰ⧇āĻ•ā§āϟāĻŋāĻ­ āĻĒā§āϰ⧋āĻŸā§‹āϟāĻžāχāĻĒāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻāĻŽā§āϞ⧇āϟāϰ āĻ¸ā§āϝ⧁āϟ UI āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž, āĻ…āĻĨāĻŦāĻž āĻ…-āχāĻ¨ā§āϟāĻžāϰ⧇āĻ•ā§āϟāĻŋāĻ­ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻāĻŽā§āϞ⧇āϟāϰ REST API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāĨ¤

  4. āĻāĻŽā§āϞ⧇āϟāϰ āĻ āĻŋāĻ•āĻžāύāĻž āĻāĻŦāĻ‚ āĻĒā§‹āĻ°ā§āϟ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāϤ⧇ useAuthEmulator() āĻ•āϞ āĻ•āϰ⧁āύ:

    Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    
    // Ideal time to initialize
    await FirebaseAuth.instance.useAuthEmulator('localhost', 9099);
    //...
    }
    

āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻž Connect your app to the Authentication emulator-āĻ āωāĻĒāϞāĻŦā§āϧāĨ¤ āφāϰāĻ“ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ, āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻāĻŽā§āϞ⧇āϟāϰ āĻ¸ā§āϝ⧁āĻŸā§‡āϰ āĻ­ā§‚āĻŽāĻŋāĻ•āĻž āĻĻ⧇āϖ⧁āύāĨ¤

āĻāĻ–āύ āϚāϞ⧁āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤

āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāϪ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ

Firebase Auth āφāĻĒāύāĻžāϕ⧇ āφāĻĒāύāĻžāϰ āύāϤ⧁āύ āĻŦāĻž āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ Flutter āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖāϕ⧇ āĻāϕ⧀āĻ­ā§‚āϤ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ…āύ⧇āĻ• āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻŦāĻ‚ āχāωāϟāĻŋāϞāĻŋāϟāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ āĻ…āύ⧇āĻ• āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āφāĻĒāύāĻžāϕ⧇ āφāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϜāĻžāύāϤ⧇ āĻšāĻŦ⧇, āϝ⧇āĻŽāύ āϤāĻžāϰāĻž āϞāĻ— āχāύ āĻ•āϰ⧇āϛ⧇ āĻŦāĻž āϞāĻ— āφāωāϟ āĻ•āϰ⧇āϛ⧇ āĻ•āĻŋāύāĻžāĨ¤

Firebase Auth āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ Stream āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻāχ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϝāĻŧ āϰāĻŋāϝāĻŧ⧇āϞāϟāĻžāχāĻŽā§‡ āϏāĻĻāĻ¸ā§āϝāϤāĻž āύāĻŋāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧇āĨ¤ āĻāĻ•āĻŦāĻžāϰ āĻ•āϞ āĻ•āϰāĻž āĻšāϞ⧇, āĻ¸ā§āĻŸā§āϰ⧀āĻŽāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϰ āĻāĻ•āϟāĻŋ āϤāĻžā§ŽāĻ•ā§āώāĻŖāĻŋāĻ• āχāϭ⧇āĻ¨ā§āϟ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āϝāĻ–āύāχ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāϪ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ āϤāĻ–āύ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤

āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āĻļā§‹āύāĻžāϰ āϜāĻ¨ā§āϝ āϤāĻŋāύāϟāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āϰāϝāĻŧ⧇āϛ⧇:

authStateChanges()

āĻāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋāϤ⧇ āϏāĻĻāĻ¸ā§āϝāϤāĻž āύāĻŋāϤ⧇, āφāĻĒāύāĻžāϰ FirebaseAuth āωāĻĻāĻžāĻšāϰāϪ⧇ authStateChanges() āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āĻ•āϞ āĻ•āϰ⧁āύ:

FirebaseAuth.instance
  .authStateChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤāϗ⧁āϞāĻŋ āϘāϟāϞ⧇ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻŦāϰāĻ–āĻžāĻ¸ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ:

  • āĻļā§āϰ⧋āϤāĻž āύāĻŋāĻŦāĻ¨ā§āϧāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ āĻ āĻŋāĻ• āĻĒāϰ⧇.
  • āϝāĻ–āύ āĻāĻ•āϜāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϏāĻžāχāύ āχāύ āĻ•āϰ⧇āύāĨ¤
  • āϝāĻ–āύ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϏāĻžāχāύ āφāωāϟ āĻšāϝāĻŧāĨ¤

idTokenChanges()

āĻāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋāϤ⧇ āϏāĻĻāĻ¸ā§āϝāϤāĻž āύāĻŋāϤ⧇, āφāĻĒāύāĻžāϰ FirebaseAuth āωāĻĻāĻžāĻšāϰāϪ⧇ idTokenChanges() āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āĻ•āϞ āĻ•āϰ⧁āύ:

FirebaseAuth.instance
  .idTokenChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤāϗ⧁āϞāĻŋ āϘāϟāϞ⧇ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻŦāϰāĻ–āĻžāĻ¸ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ:

  • āĻļā§āϰ⧋āϤāĻž āύāĻŋāĻŦāĻ¨ā§āϧāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ āĻ āĻŋāĻ• āĻĒāϰ⧇.
  • āϝāĻ–āύ āĻāĻ•āϜāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϏāĻžāχāύ āχāύ āĻ•āϰ⧇āύāĨ¤
  • āϝāĻ–āύ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϏāĻžāχāύ āφāωāϟ āĻšāϝāĻŧāĨ¤
  • āϝāĻ–āύ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻŸā§‹āϕ⧇āύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāϝāĻŧāĨ¤

userChanges()

āĻāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋāϤ⧇ āϏāĻĻāĻ¸ā§āϝāϤāĻž āύāĻŋāϤ⧇, āφāĻĒāύāĻžāϰ FirebaseAuth āωāĻĻāĻžāĻšāϰāϪ⧇ userChanges() āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āĻ•āϞ āĻ•āϰ⧁āύ:

FirebaseAuth.instance
  .userChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤāϗ⧁āϞāĻŋ āϘāϟāϞ⧇ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻŦāϰāĻ–āĻžāĻ¸ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ:

  • āĻļā§āϰ⧋āϤāĻž āύāĻŋāĻŦāĻ¨ā§āϧāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ āĻ āĻŋāĻ• āĻĒāϰ⧇.
  • āϝāĻ–āύ āĻāĻ•āϜāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϏāĻžāχāύ āχāύ āĻ•āϰ⧇āύāĨ¤
  • āϝāĻ–āύ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϏāĻžāχāύ āφāωāϟ āĻšāϝāĻŧāĨ¤
  • āϝāĻ–āύ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻŸā§‹āϕ⧇āύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāϝāĻŧāĨ¤
  • FirebaseAuth.instance.currentUser āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāĻĻāĻ¤ā§āϤ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋāϕ⧇ āϝāĻ–āύ āĻ•āϞ āĻ•āϰāĻž āĻšāϝāĻŧ:
    • reload()
    • unlink()
    • updateEmail()
    • updatePassword()
    • updatePhoneNumber()
    • updateProfile()

āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ…āĻŦāĻ¸ā§āĻĨāĻž

āϏāĻŽāĻ¸ā§āϤ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽā§‡āϰ āϜāĻ¨ā§āϝ Firebase SDKāϗ⧁āϞāĻŋ āĻ…ā§āϝāĻžāĻĒ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻŦāĻž āĻĒ⧃āĻˇā§āĻ āĻž āĻĒ⧁āύāϰāĻžāϝāĻŧ āϞ⧋āĻĄ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āφāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāϪ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻŦāϜāĻžāϝāĻŧ āϰāϝāĻŧ⧇āϛ⧇ āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŦāĻžāĻ•ā§āϏ⧇āϰ āĻŦāĻžāχāϰ⧇ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤

Android āĻāĻŦāĻ‚ iOS-āĻāϰ āĻŽāϤ⧋ āύ⧇āϟāĻŋāĻ­ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽāϗ⧁āϞāĻŋāϤ⧇, āĻāχ āφāϚāϰāĻŖāϟāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰāϝ⧋āĻ—ā§āϝ āύāϝāĻŧ āĻāĻŦāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ¸ā§āĻĨāĻŋāϤāĻŋāϟāĻŋ āĻ…ā§āϝāĻžāĻĒ āϰāĻŋāĻ¸ā§āϟāĻžāĻ°ā§āĻŸā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻŦāϜāĻžāϝāĻŧ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻĄāĻŋāĻ­āĻžāχāϏ āϏ⧇āϟāĻŋāĻ‚āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāĻžāύ⧇āϰ āĻ•ā§āϝāĻžāĻļ⧇ āĻ•āϰāĻž āĻĄā§‡āϟāĻž āϏāĻžāĻĢ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āϝāĻž āϏāĻžā§āϚāĻŋāϤ āĻĨāĻžāĻ•āĻž āϝ⧇āϕ⧋āύ⧋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϕ⧇ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻŦ⧇āĨ¤

āĻ“āϝāĻŧ⧇āĻŦ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽā§‡, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāϪ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž IndexedDB- āϤ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āφāĻĒāύāĻŋ Persistence.LOCAL āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡ āĻĄā§‡āϟāĻž āϏāĻžā§āϚāϝāĻŧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ…āĻ§ā§āϝāĻŦāϏāĻžāϝāĻŧ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āϝāĻĻāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ, āφāĻĒāύāĻŋ āĻāχ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āφāϚāϰāĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āϏ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻŦāϜāĻžāϝāĻŧ āϰāĻžāĻ–āϤ⧇, āĻŦāĻž āĻāϕ⧇āĻŦāĻžāϰ⧇āχ āύāϝāĻŧāĨ¤ āĻāχ āϏ⧇āϟāĻŋāĻ‚āϏ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇, āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āĻ•āϞ āĻ•āϰ⧁āύ FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); . āφāĻĒāύāĻŋ āĻāĻ–āύāĻ“ setPersistence(Persistence.NONE) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻ§ā§āϝāĻŦāϏāĻžāϝāĻŧ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

// Disable persistence on web platforms. Must be called on initialization:
final auth = FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.NONE);
// To change it after initialization, use `setPersistence()`:
await auth.setPersistence(Persistence.LOCAL);

āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āĻĒāϰāĻŋāϚāϝāĻŧ āĻāĻŦāĻ‚ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϏāĻžāχāύ āχāύ āĻāĻŦāĻ‚ āϏāĻžāχāύ āφāĻĒ āĻ•āϰāĻžāϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻžāϗ⧁āϞāĻŋ āĻ…āĻ¨ā§āĻŦ⧇āώāĻŖ āĻ•āϰ⧁āύ⧎