summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-06-03 23:46:30 -0600
committerIván Ávalos <avalos@disroot.org>2023-06-03 23:46:30 -0600
commit5430898e02afc95c24a3caf6a91bb82e71b6ab33 (patch)
treed6068e4086acdcad98d825c1fa9aa941e036ce6a
parenta28fa912bc04f28125c3d62d2e288145233cd789 (diff)
downloadpmsna1-5430898e02afc95c24a3caf6a91bb82e71b6ab33.tar.gz
pmsna1-5430898e02afc95c24a3caf6a91bb82e71b6ab33.tar.bz2
pmsna1-5430898e02afc95c24a3caf6a91bb82e71b6ab33.zip
Fixed auth persistence
-rw-r--r--lib/firebase/auth.dart2
-rw-r--r--lib/main.dart23
-rw-r--r--lib/screens/dashboard_screen.dart2
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');
}
});
}