From 4c548b030ce032065ff5de9c06dc11520c2277fc Mon Sep 17 00:00:00 2001 From: Nicolas Gruber Date: Tue, 30 May 2023 17:01:40 +0200 Subject: [PATCH] gui login state stays right after closing and reopening the app --- lib/UserDefinedList.dart | 2 +- lib/anonym_aut.dart | 30 ++++++++++++++++++++---------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/UserDefinedList.dart b/lib/UserDefinedList.dart index 5ebb932..5ae02e9 100644 --- a/lib/UserDefinedList.dart +++ b/lib/UserDefinedList.dart @@ -338,7 +338,7 @@ class _GenericListState extends State { ), floatingActionButton: Consumer( builder: (context, authState, child) { - if (authState.isSignedIn) { + if (authState.user != null) { return FloatingActionButton( onPressed: () { clearSelectedItems(); diff --git a/lib/anonym_aut.dart b/lib/anonym_aut.dart index dba2e1a..1d764cd 100644 --- a/lib/anonym_aut.dart +++ b/lib/anonym_aut.dart @@ -4,15 +4,26 @@ import 'package:provider/provider.dart'; class AuthState extends ChangeNotifier { FirebaseAuth auth = FirebaseAuth.instance; - bool _isSignedIn = false; + User? _user; - bool get isSignedIn => _isSignedIn; + User? get user => _user; + + AuthState() { + auth.authStateChanges().listen((User? user) { + if (user == null) { + print('User is currently signed out!'); + _user = null; + } else { + print('User is signed in!'); + _user = user; + } + notifyListeners(); + }); + } Future signInAnonymously() async { try { await auth.signInAnonymously(); - _isSignedIn = true; - notifyListeners(); } catch (e) { print(e); } @@ -20,10 +31,9 @@ class AuthState extends ChangeNotifier { Future signOut() async { await auth.signOut(); - _isSignedIn = false; - notifyListeners(); } } + class AnonymAuthScreen extends StatelessWidget { @override Widget build(BuildContext context) { @@ -32,10 +42,10 @@ class AnonymAuthScreen extends StatelessWidget { child: Consumer( builder: (context, authState, child) { return ElevatedButton( - onPressed: authState.isSignedIn - ? authState.signOut - : authState.signInAnonymously, - child: Text(authState.isSignedIn ? 'Abmelden' : 'Anonym anmelden'), + onPressed: authState.user == null + ? authState.signInAnonymously + : authState.signOut, + child: Text(authState.user == null ? 'Anonym anmelden' : 'Abmelden'), ); }, ),