diff options
Diffstat (limited to 'lib/screens')
-rw-r--r-- | lib/screens/dashboard_screen.dart | 37 | ||||
-rw-r--r-- | lib/screens/login_screen.dart | 34 | ||||
-rw-r--r-- | lib/screens/register_screen.dart | 4 |
3 files changed, 64 insertions, 11 deletions
diff --git a/lib/screens/dashboard_screen.dart b/lib/screens/dashboard_screen.dart index 914749c..2e27aa2 100644 --- a/lib/screens/dashboard_screen.dart +++ b/lib/screens/dashboard_screen.dart @@ -1,11 +1,26 @@ import 'package:flutter/material.dart'; +import 'package:pmsna1/firebase/auth.dart'; import 'package:pmsna1/providers/theme_provider.dart'; import 'package:pmsna1/settings/themes.dart'; import 'package:pmsna1/widgets/post_list.dart'; import 'package:provider/provider.dart'; -class DashboardScreen extends StatelessWidget { +class DashboardScreen extends StatefulWidget { const DashboardScreen({super.key}); + + @override + State<DashboardScreen> createState() => _DashboardScreenState(); +} + +class _DashboardScreenState extends State<DashboardScreen> { + late Auth _auth; + + @override + void initState() { + super.initState(); + _auth = Auth(); + } + @override Widget build(BuildContext context) { final ThemeProvider themeProvider = context.watch<ThemeProvider>(); @@ -28,8 +43,10 @@ class DashboardScreen extends StatelessWidget { backgroundImage: NetworkImage('https://avalos.me/images/pro.jpg'), ), - accountName: const Text('Iván Ávalos'), - accountEmail: const Text('avalos@disroot.org'), + accountName: Text(_auth.currentUser?.displayName ?? "Lincite"), + accountEmail: _auth.currentUser?.email != null + ? Text(_auth.currentUser!.email!) + : null, ), ListTile( leading: const Icon(Icons.home), @@ -79,6 +96,12 @@ class DashboardScreen extends StatelessWidget { themeProvider.theme = newSelection.first; }), ), + ), + const Divider(), + ListTile( + title: const Text('Cerrar sesión'), + leading: const Icon(Icons.logout), + onTap: () => signOut(context), ) ], ), @@ -92,4 +115,12 @@ class DashboardScreen extends StatelessWidget { ), ); } + + void signOut(BuildContext context) { + _auth.signOut().then((success) { + if (success) { + Navigator.of(context).popUntil(ModalRoute.withName('/login')); + } + }); + } } diff --git a/lib/screens/login_screen.dart b/lib/screens/login_screen.dart index e70e84d..fd4697c 100644 --- a/lib/screens/login_screen.dart +++ b/lib/screens/login_screen.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:pmsna1/firebase/email_auth.dart'; +import 'package:pmsna1/firebase/auth.dart'; import 'package:pmsna1/widgets/loading_modal_widget.dart'; import 'package:pmsna1/widgets/responsive.dart'; import 'package:social_login_buttons/social_login_buttons.dart'; @@ -15,7 +15,7 @@ class _LoginScreenState extends State<LoginScreen> with SingleTickerProviderStateMixin { late AnimationController _controller; - final EmailAuth emailAuth = EmailAuth(); + final Auth _auth = Auth(); bool isLoading = false; @@ -97,7 +97,7 @@ class _LoginScreenState extends State<LoginScreen> SocialLoginButton( buttonType: SocialLoginButtonType.google, text: 'Iniciar sesión con Google', - onPressed: () {}, + onPressed: () => onGoogleLoginClicked(context), ), spacer, SocialLoginButton( @@ -109,7 +109,7 @@ class _LoginScreenState extends State<LoginScreen> SocialLoginButton( buttonType: SocialLoginButtonType.github, text: 'Iniciar sesión con GitHub', - onPressed: () {}, + onPressed: () => onGithubLoginClicked(context), ), spacer, TextButton( @@ -126,8 +126,8 @@ class _LoginScreenState extends State<LoginScreen> ); void onLoginClicked(BuildContext context) { - emailAuth - .createUserWithEmailAndPassword( + _auth + .signInWithEmailAndPassword( email: _emailController.text, password: _passwordController.text, ) @@ -140,6 +140,28 @@ class _LoginScreenState extends State<LoginScreen> }); } + void onGoogleLoginClicked(BuildContext context) { + _auth.signInWithGoogle().then((success) { + setState(() { + isLoading = false; + }); + if (success) { + Navigator.of(context).pushNamed('/dash'); + } + }); + } + + void onGithubLoginClicked(BuildContext context) { + _auth.signInWithGithub().then((success) { + setState(() { + isLoading = false; + }); + if (success) { + Navigator.of(context).pushNamed('/dash'); + } + }); + } + @override Widget build(BuildContext context) { return Scaffold( diff --git a/lib/screens/register_screen.dart b/lib/screens/register_screen.dart index aa5c213..16875f2 100644 --- a/lib/screens/register_screen.dart +++ b/lib/screens/register_screen.dart @@ -1,7 +1,7 @@ import 'package:email_validator/email_validator.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; -import 'package:pmsna1/firebase/email_auth.dart'; +import 'package:pmsna1/firebase/auth.dart'; import 'package:pmsna1/widgets/avatar_picker.dart'; import 'package:social_login_buttons/social_login_buttons.dart'; @@ -158,7 +158,7 @@ class _RegisterScreenState extends State<RegisterScreen> { setState(() { isLoading = false; if (validateForm()) { - EmailAuth() + Auth() .createUserWithEmailAndPassword( email: _emailController.text, password: _passwordController.text, |