diff options
author | Iván Ávalos <avalos@disroot.org> | 2023-06-03 23:46:30 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2023-06-03 23:46:30 -0600 |
commit | 5430898e02afc95c24a3caf6a91bb82e71b6ab33 (patch) | |
tree | d6068e4086acdcad98d825c1fa9aa941e036ce6a | |
parent | a28fa912bc04f28125c3d62d2e288145233cd789 (diff) | |
download | pmsna1-5430898e02afc95c24a3caf6a91bb82e71b6ab33.tar.gz pmsna1-5430898e02afc95c24a3caf6a91bb82e71b6ab33.tar.bz2 pmsna1-5430898e02afc95c24a3caf6a91bb82e71b6ab33.zip |
Fixed auth persistence
-rw-r--r-- | lib/firebase/auth.dart | 2 | ||||
-rw-r--r-- | lib/main.dart | 23 | ||||
-rw-r--r-- | lib/screens/dashboard_screen.dart | 2 |
3 files changed, 19 insertions, 8 deletions
diff --git a/lib/firebase/auth.dart b/lib/firebase/auth.dart index 791e69a..8377d18 100644 --- a/lib/firebase/auth.dart +++ b/lib/firebase/auth.dart @@ -7,6 +7,8 @@ class Auth { User? get currentUser => _auth.currentUser; + Stream<User?> get userChanges => _auth.userChanges(); + Future<bool> createUserWithEmailAndPassword({ required String email, required String password, diff --git a/lib/main.dart b/lib/main.dart index a174aaa..041ab7f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,9 +1,12 @@ import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; +import 'package:pmsna1/firebase/auth.dart'; import 'package:pmsna1/providers/events_provider.dart'; import 'package:pmsna1/providers/flags_provider.dart'; import 'package:pmsna1/providers/theme_provider.dart'; import 'package:pmsna1/routes.dart'; +import 'package:pmsna1/screens/dashboard_screen.dart'; +import 'package:pmsna1/screens/login_screen.dart'; import 'package:pmsna1/settings/themes.dart'; import 'package:provider/provider.dart'; @@ -50,12 +53,18 @@ class PMSNA1 extends StatelessWidget { final ThemeProvider provider = context.watch<ThemeProvider>(); final ThemeData? theme = provider.theme; provider.syncFromPrefs(); - return MaterialApp( - theme: theme ?? ThemeSettings.lightTheme, - darkTheme: theme ?? ThemeSettings.darkTheme, - themeMode: ThemeMode.system, - routes: getApplicationRoutes(), - initialRoute: '/login', - ); + return StreamBuilder( + stream: Auth().userChanges, + builder: (context, snapshot) { + return MaterialApp( + theme: theme ?? ThemeSettings.lightTheme, + darkTheme: theme ?? ThemeSettings.darkTheme, + themeMode: ThemeMode.system, + routes: getApplicationRoutes(), + home: snapshot.data != null && !snapshot.data!.isAnonymous + ? const DashboardScreen() + : const LoginScreen(), + ); + }); } } diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index b267c20..9b81bc1 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -120,7 +120,7 @@ class _DashboardScreenState extends State<DashboardScreen> { void signOut(BuildContext context) { _auth.signOut().then((success) { if (success) { - Navigator.of(context).popUntil(ModalRoute.withName('/login')); + Navigator.of(context).pushReplacementNamed('/login'); } }); } |