Skip to content

Commit c4b6969

Browse files
committed
Refactored Auth Services
1 parent e71ce1f commit c4b6969

File tree

6 files changed

+121
-82
lines changed

6 files changed

+121
-82
lines changed

givison/lib/auth.services.dart

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import 'package:firebase_auth/firebase_auth.dart';
2+
import 'package:flutter/material.dart';
3+
import 'package:fluttertoast/fluttertoast.dart';
4+
import 'package:cloud_firestore/cloud_firestore.dart';
5+
import 'package:givison/common/toastMessage.dart';
6+
import 'package:givison/screens/dashboard/dashboard.screen.dart';
7+
import 'package:givison/screens/on_boarding/on_boarding.screen.dart';
8+
import 'package:givison/screens/signup/verify_email.screen.dart';
9+
10+
class AuthService {
11+
final FirebaseAuth _auth = FirebaseAuth.instance;
12+
final FirebaseFirestore _firestore = FirebaseFirestore.instance;
13+
14+
Future<void> signup(BuildContext context, String email, String password, String name, String phone) async {
15+
try {
16+
UserCredential userCredential = await _auth.createUserWithEmailAndPassword(
17+
email: email,
18+
password: password,
19+
);
20+
Navigator.push(
21+
context,
22+
MaterialPageRoute(builder: (context) => const Verify()),
23+
);
24+
await _firestore.collection("users").doc(userCredential.user!.uid).set({
25+
'Name': name,
26+
'Email': email,
27+
'Phone': phone,
28+
'Password': password,
29+
});
30+
} on FirebaseAuthException catch (e) {
31+
Utils().toastMessage(e.message!);
32+
}
33+
}
34+
35+
Future<void> login(BuildContext context, String email, String password) async {
36+
try {
37+
UserCredential userCredential = await _auth.signInWithEmailAndPassword(
38+
email: email,
39+
password: password,
40+
);
41+
Utils().toastMessage(userCredential.user!.email.toString());
42+
Navigator.pushReplacement(
43+
context,
44+
MaterialPageRoute(builder: (context) => Dashboard()),
45+
);
46+
} on FirebaseAuthException catch (e) {
47+
Utils().toastMessage(e.message!);
48+
}
49+
}
50+
51+
Future<void> resetPassword(String email) async {
52+
try {
53+
await _auth.sendPasswordResetEmail(email: email.trim());
54+
} on FirebaseAuthException catch (e) {
55+
print(e.message);
56+
}
57+
}
58+
59+
Future<void> uploadingData(String name, String email, String phone, String password) async {
60+
await _firestore.collection("Users").add({
61+
'Name': name,
62+
'E-mail': email,
63+
'Phone Number': phone,
64+
'Pw': password,
65+
});
66+
}
67+
68+
Future<void> logout(BuildContext context) async {
69+
try {
70+
await _auth.signOut();
71+
Navigator.pushReplacement(
72+
context,
73+
MaterialPageRoute(builder: (context) => OnBoardingScreen()),
74+
);
75+
} on FirebaseAuthException catch (e) {
76+
Utils().toastMessage(e.message!);
77+
}
78+
}
79+
}

givison/lib/common/colors.dart

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
import 'dart:ui';
2-
31
import 'package:flutter/material.dart';
42

5-
const tDarkColor=Color(0xFF000000);
6-
7-
const tOnboardingPage1Color = Color.fromRGBO(255, 255, 255, 1);
8-
const tOnboardingPage2Color = Color.fromRGBO(255, 255, 255, 1);
9-
const tOnboardingPage3Color = Color.fromRGBO(255, 255, 255, 1);
3+
const OnboardingPage1Color = Color.fromRGBO(255, 255, 255, 1);
4+
const OnboardingPage2Color = Color.fromRGBO(255, 255, 255, 1);
5+
const OnboardingPage3Color = Color.fromRGBO(255, 255, 255, 1);
106

117
const Color primaryWhite = Colors.white;
128
const Color secondaryWhite = Colors.white70;

givison/lib/screens/dashboard/dashboard.screen.dart

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:flutter/material.dart';
2+
import 'package:givison/auth.services.dart';
23
import 'package:givison/common/colors.dart';
34
import 'package:givison/common/image_strings.dart';
45
import 'package:givison/common/size.dart';
@@ -14,7 +15,6 @@ import 'dart:io';
1415
import 'dart:convert';
1516
import 'package:givison/models/datamodel.dart';
1617
import 'package:fluttertoast/fluttertoast.dart';
17-
import 'package:firebase_auth/firebase_auth.dart';
1818

1919
class Dashboard extends StatefulWidget {
2020
const Dashboard({Key? key}) : super(key: key);
@@ -196,19 +196,13 @@ class _DashboardState extends State<Dashboard> {
196196
}
197197

198198
class ClickableIcon extends StatelessWidget {
199-
final auth = FirebaseAuth.instance;
199+
final AuthService _authService = AuthService(); // Initialize AuthService
200+
200201
@override
201202
Widget build(BuildContext context) {
202203
return GestureDetector(
203204
onTap: () {
204-
auth.signOut().then((value) {
205-
Navigator.pushReplacement(
206-
context,
207-
MaterialPageRoute(
208-
builder: (context) => OnBoardingScreen(),
209-
),
210-
);
211-
});
205+
_authService.logout(context); // Use AuthService to logout
212206
},
213207
child: const Icon(
214208
Icons.logout,

givison/lib/screens/login/login.screen.dart

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:flutter/material.dart';
2+
import 'package:givison/auth.services.dart';
23
import 'package:givison/common/image_strings.dart';
34
import 'package:givison/common/size.dart';
45
import 'package:givison/common/text_strings.dart';
@@ -8,7 +9,7 @@ import 'package:givison/screens/dashboard/dashboard.screen.dart';
89
import 'package:firebase_auth/firebase_auth.dart';
910
import 'package:givison/common/toastMessage.dart';
1011
import 'package:givison/screens/login/forget_password/email.screen.dart';
11-
import 'package:ionicons/ionicons.dart';
12+
import 'package:ionicons/ionicons.dart'; // Import the AuthService
1213

1314
class LoginScreen extends StatefulWidget {
1415
@override
@@ -19,7 +20,7 @@ class _LoginScreenState extends State<LoginScreen> {
1920
final _formKey = GlobalKey<FormState>();
2021
final emailController = TextEditingController();
2122
final passwordController = TextEditingController();
22-
final _auth = FirebaseAuth.instance;
23+
final AuthService _authService = AuthService(); // Initialize AuthService
2324
bool isLoading = false;
2425
bool obscurePassword = true; // Initially password is obscured
2526

@@ -30,22 +31,16 @@ class _LoginScreenState extends State<LoginScreen> {
3031
passwordController.dispose();
3132
}
3233

33-
void loginnn() {
34+
void login() {
3435
setState(() {
3536
isLoading = true;
3637
});
3738

38-
_auth
39-
.signInWithEmailAndPassword(
40-
email: emailController.text, password: passwordController.text)
41-
.then((value) {
42-
Utils().toastMessage(value.user!.email.toString());
43-
Navigator.push(
44-
context, MaterialPageRoute(builder: (context) => Dashboard()));
45-
}).catchError((error) {
46-
debugPrint(error.toString());
47-
Utils().toastMessage(error.toString());
48-
}).whenComplete(() {
39+
_authService.login(
40+
context,
41+
emailController.text,
42+
passwordController.text,
43+
).whenComplete(() {
4944
setState(() {
5045
isLoading = false;
5146
});
@@ -87,12 +82,12 @@ class _LoginScreenState extends State<LoginScreen> {
8782
),
8883
const Text(
8984
tLoginTitle,
90-
style: TextStyles.blackTitle
85+
style: TextStyles.blackTitle,
9186
),
9287
const SizedBox(height: 8),
9388
const Text(
9489
tLoginSubTitle,
95-
style: TextStyles.blackSubTitle
90+
style: TextStyles.blackSubTitle,
9691
),
9792
const SizedBox(height: 40),
9893
Form(
@@ -184,7 +179,7 @@ class _LoginScreenState extends State<LoginScreen> {
184179
? null
185180
: () {
186181
if (_formKey.currentState!.validate()) {
187-
loginnn();
182+
login();
188183
}
189184
},
190185
style: ElevatedButton.styleFrom(
@@ -200,9 +195,9 @@ class _LoginScreenState extends State<LoginScreen> {
200195
: const Text(
201196
tLogin,
202197
style: TextStyles.loginButton,
203-
),
204198
),
205199
),
200+
),
206201
const SizedBox(height: 20),
207202
Align(
208203
alignment: Alignment.center,
@@ -240,8 +235,7 @@ class _LoginScreenState extends State<LoginScreen> {
240235

241236
Future resetPassword() async {
242237
try {
243-
await FirebaseAuth.instance
244-
.sendPasswordResetEmail(email: emailController.text.trim());
238+
await _authService.resetPassword(emailController.text);
245239
} on FirebaseAuthException catch (e) {
246240
print(e);
247241
}

givison/lib/screens/on_boarding/on_boarding.screen.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class _OnBoardingScreenState extends State<OnBoardingScreen> {
6868
pages:[
6969
Container(
7070
padding: const EdgeInsets.all(tDefaultSize),
71-
color: tOnboardingPage1Color,
71+
color: OnboardingPage1Color,
7272
child: Column(
7373
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
7474
children: [
@@ -86,7 +86,7 @@ class _OnBoardingScreenState extends State<OnBoardingScreen> {
8686
),
8787
Container(
8888
padding: const EdgeInsets.all(tDefaultSize),
89-
color: tOnboardingPage2Color,
89+
color: OnboardingPage2Color,
9090
child: Column(
9191
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
9292
children: [
@@ -104,7 +104,7 @@ class _OnBoardingScreenState extends State<OnBoardingScreen> {
104104
),
105105
Container(
106106
padding: const EdgeInsets.all(tDefaultSize),
107-
color: tOnboardingPage3Color,
107+
color: OnboardingPage3Color,
108108
child: Column(
109109
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
110110
children: [
@@ -137,7 +137,7 @@ class _OnBoardingScreenState extends State<OnBoardingScreen> {
137137
child: Container(
138138
padding: const EdgeInsets.all(20.0),
139139
decoration: const BoxDecoration(
140-
color: tDarkColor, shape: BoxShape.circle),
140+
color: primaryBlack, shape: BoxShape.circle),
141141
child: Icon(Icons.arrow_forward_ios),
142142
)
143143
),

givison/lib/screens/signup/signup.screen.dart

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:fluttertoast/fluttertoast.dart';
3+
import 'package:givison/auth.services.dart';
34
import 'package:givison/common/size.dart';
45
import 'package:givison/common/text_strings.dart';
56
import 'package:firebase_auth/firebase_auth.dart';
@@ -23,9 +24,7 @@ class _SignUpScreenState extends State<SignUpScreen> {
2324
final passwordController = TextEditingController();
2425
final phController = TextEditingController();
2526
final nameController = TextEditingController();
26-
27-
final FirebaseAuth _auth = FirebaseAuth.instance;
28-
final fireStore = FirebaseFirestore.instance.collection("users");
27+
final AuthService _authService = AuthService(); // Initialize AuthService
2928

3029
@override
3130
void dispose() {
@@ -34,28 +33,20 @@ class _SignUpScreenState extends State<SignUpScreen> {
3433
passwordController.dispose();
3534
}
3635

37-
void loginn() {
36+
void signup() async {
3837
setState(() {
3938
loading = true;
4039
});
41-
_auth
42-
.createUserWithEmailAndPassword(
43-
email: emailController.text.toString(),
44-
password: passwordController.text.toString())
45-
.then((value) {
46-
Navigator.push(
47-
context, MaterialPageRoute(builder: (context) => const Verify()));
48-
}).onError((error, stackTrace) {
49-
Utils().toastMessage(error.toString());
50-
});
51-
}
52-
53-
void uploadingData() async {
54-
await FirebaseFirestore.instance.collection("Users").add({
55-
'Name': nameController.text.toString(),
56-
'E-mail': emailController.text.toString(),
57-
'Phone Number': phController.text.toString(),
58-
'Pw': passwordController.text.toString(),
40+
await _authService.signup(
41+
context,
42+
emailController.text,
43+
passwordController.text,
44+
nameController.text,
45+
phController.text,
46+
).whenComplete(() {
47+
setState(() {
48+
loading = false;
49+
});
5950
});
6051
}
6152

@@ -87,12 +78,12 @@ class _SignUpScreenState extends State<SignUpScreen> {
8778
const SizedBox(height: 40),
8879
const Text(
8980
tSignupTitle,
90-
style: TextStyles.blackTitle
81+
style: TextStyles.blackTitle,
9182
),
9283
const SizedBox(height: 8),
9384
const Text(
9485
tSignupSubTitle,
95-
style: TextStyles.blackSubTitle
86+
style: TextStyles.blackSubTitle,
9687
),
9788
const SizedBox(height: 40),
9889
Form(
@@ -199,22 +190,7 @@ class _SignUpScreenState extends State<SignUpScreen> {
199190
if (_formKey.currentState!.validate()) {
200191
String email = emailController.text;
201192
if (email.contains('@iiitm.ac.in')) {
202-
loginn();
203-
String name = nameController.text;
204-
String ph = phController.text;
205-
String pw = passwordController.text;
206-
fireStore
207-
.doc(email)
208-
.set({
209-
'Name': name,
210-
'Email': email,
211-
'Phone': ph,
212-
'Password': pw
213-
})
214-
.then((value) {})
215-
.onError((error, stackStrace) {
216-
Utils().toastMessage(error.toString());
217-
});
193+
signup();
218194
} else {
219195
Fluttertoast.showToast(
220196
msg: "Not the Organization Mail");
@@ -231,7 +207,7 @@ class _SignUpScreenState extends State<SignUpScreen> {
231207
),
232208
child: const Text(
233209
tSignupButton,
234-
style: TextStyles.loginButton
210+
style: TextStyles.loginButton,
235211
),
236212
),
237213
),

0 commit comments

Comments
 (0)