Skip to content

Commit

Permalink
feat: firebase login
Browse files Browse the repository at this point in the history
  • Loading branch information
ravindranag committed Apr 17, 2023
1 parent f92f2aa commit fbd6450
Show file tree
Hide file tree
Showing 7 changed files with 174 additions and 158 deletions.
14 changes: 14 additions & 0 deletions lib/src/features/authentication/controller/login_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import 'package:courses_app/src/repository/auth_repository.dart';
import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';

class LoginController extends GetxController {
static LoginController get instance => Get.find();

final email = TextEditingController();
final password = TextEditingController();

void loginExistingUser(String email, String password) {
AuthRepository.instance.loginUserWithEmailAndPassword(email, password);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';

import 'widgets/LoginForm.dart';
import 'widgets/login_form.dart';
import 'widgets/login_screen_header.dart';

class LoginScreen extends StatelessWidget {
Expand Down
150 changes: 0 additions & 150 deletions lib/src/features/authentication/screen/login/widgets/LoginForm.dart

This file was deleted.

144 changes: 144 additions & 0 deletions lib/src/features/authentication/screen/login/widgets/login_form.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
import 'package:courses_app/src/constants/images.dart';
import 'package:courses_app/src/constants/text.dart';
import 'package:courses_app/src/features/authentication/controller/login_controller.dart';
import 'package:courses_app/src/features/authentication/screen/signup/signup_screen.dart';
import 'package:courses_app/src/features/dashboard/screen/dashboard/dashboard_screen.dart';
import 'package:courses_app/src/widgets/common/outlined_password_text_field.dart';
import 'package:courses_app/src/widgets/common/outlined_text_field.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

import 'forgot_password_bottom_sheet.dart';

class LoginForm extends StatelessWidget {
const LoginForm({
super.key,
});

@override
Widget build(BuildContext context) {
final controller = Get.put(LoginController());

final formKey = GlobalKey<FormState>();

void handleLogin() {
LoginController.instance.loginExistingUser(
controller.email.text.trim(),
controller.password.text.trim(),
);
}

return Form(
key: formKey,
child: Column(
children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 30.0),
child: Column(
children: [
OutlinedTextField(
label: const Text(
'Email',
),
controller: controller.email,
),
const SizedBox(
height: 16.0,
),
OutlinedPasswordTextField(
label: const Text('Password'),
controller: controller.password,
)
],
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 10.0),
child: Column(
children: [
TextButton(
onPressed: () {
showModalBottomSheet(
context: context,
// enableDrag: true,
isScrollControlled: true,
useSafeArea: true,
builder: (context) {
return const ForgotPasswordBottomSheet();
});
},
child: const Text(
'Forgot password?',
),
),
SizedBox(
width: double.infinity,
child: FilledButton(
style: FilledButton.styleFrom(),
onPressed: handleLogin,
child: const Text(
'Login',
),
),
),
],
),
),
const Text('OR'),
Padding(
padding: const EdgeInsets.symmetric(vertical: 10.0),
child: OutlinedButton(
onPressed: () {},
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(50.0),
image: const DecorationImage(
image: AssetImage(googleLogo), fit: BoxFit.contain),
// shape: BoxShape.rectangle
),
width: 24,
height: 24,
),
const SizedBox(
width: 8.0,
),
const Text('Login with Google')
],
),
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0),
child: TextButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return const SignUpScreen();
},
),
);
},
child: Text.rich(TextSpan(
text: "Don't have an account?",
style: Theme.of(context).textTheme.bodyLarge,
children: [
TextSpan(
text: ' Signup',
style: Theme.of(context)
.textTheme
.bodyLarge
?.apply(color: Theme.of(context).colorScheme.primary),
)
])),
),
)
],
),
);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:courses_app/src/constants/images.dart';
import 'package:courses_app/src/features/authentication/controller/SignUpController.dart';
import 'package:courses_app/src/features/authentication/controller/signup_controller.dart';
import 'package:courses_app/src/features/authentication/screen/login/login_screen.dart';
import 'package:courses_app/src/widgets/common/outlined_password_text_field.dart';
import 'package:courses_app/src/widgets/common/outlined_text_field.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:courses_app/src/repository/auth_repository.dart';
import 'package:flutter/material.dart';

class DashboardSliverAppBar extends StatelessWidget {
Expand All @@ -13,9 +14,6 @@ class DashboardSliverAppBar extends StatelessWidget {
return SliverAppBar(
pinned: true,
expandedHeight: 200.0,
// titleTextStyle: Theme.of(context).textTheme.headlineMedium?.apply(
// color: onPrimaryContainer
// ),
flexibleSpace: FlexibleSpaceBar(
title: Stack(
// mainAxisSize: MainAxisSize.min,
Expand All @@ -37,15 +35,25 @@ class DashboardSliverAppBar extends StatelessWidget {
child: Text(
'Hi Ravindra',
style: TextStyle(
color: Theme.of(context).colorScheme.inverseSurface
),
color: Theme.of(context).colorScheme.inverseSurface),
),
),
],
),
titlePadding:
const EdgeInsetsDirectional.only(start: 16, bottom: 16),
const EdgeInsetsDirectional.only(start: 16, bottom: 16),
),
actions: [
IconButton(
onPressed: () {
AuthRepository.instance.logout();
},
icon: Icon(
Icons.power_settings_new,
color: Theme.of(context).colorScheme.error,
),
)
],
leading: null,
automaticallyImplyLeading: false,
);
Expand Down

0 comments on commit fbd6450

Please sign in to comment.