summaryrefslogtreecommitdiff
path: root/lib/screens
diff options
context:
space:
mode:
Diffstat (limited to 'lib/screens')
-rw-r--r--lib/screens/dashboard_screen.dart37
-rw-r--r--lib/screens/login_screen.dart34
-rw-r--r--lib/screens/register_screen.dart4
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,