reset passord

This commit is contained in:
Felipe
2023-11-01 10:00:17 -05:00
parent a6c6552213
commit d37eb9b190
8 changed files with 141 additions and 9 deletions
+10 -4
View File
@@ -6,9 +6,9 @@ import 'package:prosappco/src/authentication/authentication_repository.dart';
import 'package:prosappco/src/providers/user_provider.dart';
import 'package:prosappco/src/screens/calendar.dart';
import 'package:prosappco/src/screens/city.dart';
import 'package:prosappco/src/screens/login.dart';
import 'package:prosappco/src/screens/login/login.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:prosappco/src/screens/login_email.dart';
import 'package:prosappco/src/screens/login/login_email.dart';
import 'package:prosappco/src/screens/my_services.dart';
import 'package:prosappco/src/screens/my_services_pro.dart';
import 'package:prosappco/src/screens/new_number.dart';
@@ -18,8 +18,9 @@ import 'package:prosappco/src/screens/professional_profile.dart';
import 'package:prosappco/src/screens/professional_revision.dart';
import 'package:prosappco/src/screens/profile.dart';
import 'package:prosappco/src/screens/profile_pro.dart';
import 'package:prosappco/src/screens/register.dart';
import 'package:prosappco/src/screens/register/register.dart';
import 'package:prosappco/src/screens/request_sent.dart';
import 'package:prosappco/src/screens/reset_password/reset_password.dart';
import 'package:prosappco/src/screens/service.dart';
import 'package:prosappco/src/screens/solicitudes.dart';
import 'package:prosappco/src/services/local_notifications.dart';
@@ -82,7 +83,11 @@ class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [ChangeNotifierProvider(create: (_) => UserProvider())],
providers: [
ChangeNotifierProvider(
create: (_) => UserProvider(),
),
],
child: GetMaterialApp(
theme: ThemeData(fontFamily: 'Poppins'),
debugShowCheckedModeBanner: false,
@@ -108,6 +113,7 @@ class MyApp extends StatelessWidget {
'/solicitud': (context) => SolicitudScreen(),
'/misserviciospro': (context) => MyServicesProScreen(),
'/misservicios': (context) => MyServicesScreen(),
'/resetpassword': (context) => const ResetPasswordScreen(),
},
onGenerateRoute: (settings) {
throw Exception('Ruta desconocida: ${settings.name}');
@@ -4,7 +4,7 @@ import 'package:get/get.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:prosappco/src/authentication/exceptions/register_failed.dart';
import 'package:prosappco/src/models/event_model.dart';
import 'package:prosappco/src/screens/login.dart';
import 'package:prosappco/src/screens/login/login.dart';
import 'package:prosappco/src/screens/service.dart';
class AuthenticationRepository extends GetxController {
@@ -229,7 +229,7 @@ class _LoginEmailScreenState extends State<LoginEmailScreen> {
padding: const EdgeInsets.symmetric(vertical: 20),
child: TextButton(
onPressed: () {
// Agrega aquí la lógica para manejar la recuperación de contraseña
Navigator.pushNamed(context, '/resetpassword');
},
child: const Text(
'Olvidé la contraseña',
+1 -1
View File
@@ -426,7 +426,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
@override
Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context);
// final userProvider = Provider.of<UserProvider>(context);
String city = _ciudad.toString();
return Scaffold(
@@ -9,7 +9,7 @@ import 'package:prosappco/src/authentication/authentication_repository.dart';
import 'package:prosappco/src/components/primary_btn.dart';
import 'package:prosappco/src/controllers/register_controller.dart';
import 'package:prosappco/src/models/setting_model.dart';
import 'package:prosappco/src/screens/login.dart';
import 'package:prosappco/src/screens/login/login.dart';
import 'package:prosappco/src/screens/web_view.dart';
import 'package:responsive_builder/responsive_builder.dart';
import 'package:url_launcher/url_launcher.dart';
@@ -0,0 +1,126 @@
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:prosappco/src/components/pop_appbar.dart';
import 'package:prosappco/src/components/primary_btn.dart';
import 'package:prosappco/src/controllers/login_email_controller.dart';
class ResetPasswordScreen extends StatelessWidget {
const ResetPasswordScreen({super.key});
@override
Widget build(BuildContext context) {
final controller = Get.put(LoginEmailController());
return Scaffold(
appBar: PopAppbar(
onPressed: () {
Navigator.pop(context);
},
label: 'Restablecer Contraseña'),
body: SafeArea(
child: GestureDetector(
onTap: () => FocusScope.of(context).unfocus(),
child: Center(
child: Container(
padding: const EdgeInsets.all(15),
color: Colors.transparent,
width: MediaQuery.of(context).size.width * 0.9,
child: Column(
children: [
const SizedBox(height: 20),
const Text(
'Restablecer contraseña',
style: TextStyle(fontWeight: FontWeight.w800, fontSize: 25),
textAlign: TextAlign.center,
),
const SizedBox(height: 20),
const Text(
'Ingresa ingresa tu correo electrónico y te enviaremos un enlace para restablecer tu contraseña',
style: TextStyle(color: Colors.grey, fontSize: 12),
textAlign: TextAlign.center,
),
const SizedBox(height: 40),
const Padding(
padding: EdgeInsets.only(bottom: 5),
child: Align(
alignment: Alignment.topLeft,
child: Text('Email',
style: TextStyle(
fontSize: 18.0, color: Color(0xFF65676B))),
),
),
TextFormField(
controller: controller.email,
validator: (String? value) {
if (value == null || value.isEmpty) {
return 'Por favor, ingresa un Email';
}
final RegExp emailRegExp =
RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$');
if (!emailRegExp.hasMatch(value)) {
return 'Por favor, ingresa un Email válido';
}
return null;
},
decoration: const InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Color(0xFFECECEC)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
errorBorder: OutlineInputBorder(
borderSide:
BorderSide(color: Color.fromARGB(255, 184, 0, 0)),
borderRadius: BorderRadius.all(
Radius.circular(50),
)),
hintText: 'Hello@gmail.com',
fillColor: Color.fromARGB(255, 239, 239, 239),
filled: true,
prefixIcon: Icon(Icons.email_outlined),
hintStyle: TextStyle(
color: Colors.grey,
),
),
),
const SizedBox(height: 80),
PrimaryButtom(
onPressed: () async {
try {
await FirebaseAuth.instance.sendPasswordResetEmail(
email: controller.email.text.trim());
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text(
'Se ha enviado un enlace de restablecimiento de contraseña a tu correo electrónico.'),
),
);
Navigator.pop(context);
} catch (e) {
ScaffoldMessenger.of(context)
.showSnackBar(const SnackBar(
content: Text(
'Hubo un error al enviar el enlace de restablecimiento de contraseña.'),
));
}
},
label: 'Enviar'),
],
),
),
),
)),
);
}
}
+1 -1
View File
@@ -261,7 +261,7 @@ class _ServiceScreenState extends State<ServiceScreen> {
}
void _checkForUpdate(String? settings) {
if (appVersion != settings) {
if (appVersion == settings) {
showDialog(
context: context,
builder: (context) {