reset passord
This commit is contained in:
+10
-4
@@ -6,9 +6,9 @@ import 'package:prosappco/src/authentication/authentication_repository.dart';
|
|||||||
import 'package:prosappco/src/providers/user_provider.dart';
|
import 'package:prosappco/src/providers/user_provider.dart';
|
||||||
import 'package:prosappco/src/screens/calendar.dart';
|
import 'package:prosappco/src/screens/calendar.dart';
|
||||||
import 'package:prosappco/src/screens/city.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: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.dart';
|
||||||
import 'package:prosappco/src/screens/my_services_pro.dart';
|
import 'package:prosappco/src/screens/my_services_pro.dart';
|
||||||
import 'package:prosappco/src/screens/new_number.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/professional_revision.dart';
|
||||||
import 'package:prosappco/src/screens/profile.dart';
|
import 'package:prosappco/src/screens/profile.dart';
|
||||||
import 'package:prosappco/src/screens/profile_pro.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/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/service.dart';
|
||||||
import 'package:prosappco/src/screens/solicitudes.dart';
|
import 'package:prosappco/src/screens/solicitudes.dart';
|
||||||
import 'package:prosappco/src/services/local_notifications.dart';
|
import 'package:prosappco/src/services/local_notifications.dart';
|
||||||
@@ -82,7 +83,11 @@ class MyApp extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MultiProvider(
|
return MultiProvider(
|
||||||
providers: [ChangeNotifierProvider(create: (_) => UserProvider())],
|
providers: [
|
||||||
|
ChangeNotifierProvider(
|
||||||
|
create: (_) => UserProvider(),
|
||||||
|
),
|
||||||
|
],
|
||||||
child: GetMaterialApp(
|
child: GetMaterialApp(
|
||||||
theme: ThemeData(fontFamily: 'Poppins'),
|
theme: ThemeData(fontFamily: 'Poppins'),
|
||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
@@ -108,6 +113,7 @@ class MyApp extends StatelessWidget {
|
|||||||
'/solicitud': (context) => SolicitudScreen(),
|
'/solicitud': (context) => SolicitudScreen(),
|
||||||
'/misserviciospro': (context) => MyServicesProScreen(),
|
'/misserviciospro': (context) => MyServicesProScreen(),
|
||||||
'/misservicios': (context) => MyServicesScreen(),
|
'/misservicios': (context) => MyServicesScreen(),
|
||||||
|
'/resetpassword': (context) => const ResetPasswordScreen(),
|
||||||
},
|
},
|
||||||
onGenerateRoute: (settings) {
|
onGenerateRoute: (settings) {
|
||||||
throw Exception('Ruta desconocida: ${settings.name}');
|
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:google_sign_in/google_sign_in.dart';
|
||||||
import 'package:prosappco/src/authentication/exceptions/register_failed.dart';
|
import 'package:prosappco/src/authentication/exceptions/register_failed.dart';
|
||||||
import 'package:prosappco/src/models/event_model.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';
|
import 'package:prosappco/src/screens/service.dart';
|
||||||
|
|
||||||
class AuthenticationRepository extends GetxController {
|
class AuthenticationRepository extends GetxController {
|
||||||
|
|||||||
@@ -229,7 +229,7 @@ class _LoginEmailScreenState extends State<LoginEmailScreen> {
|
|||||||
padding: const EdgeInsets.symmetric(vertical: 20),
|
padding: const EdgeInsets.symmetric(vertical: 20),
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
// Agrega aquí la lógica para manejar la recuperación de contraseña
|
Navigator.pushNamed(context, '/resetpassword');
|
||||||
},
|
},
|
||||||
child: const Text(
|
child: const Text(
|
||||||
'Olvidé la contraseña',
|
'Olvidé la contraseña',
|
||||||
@@ -426,7 +426,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final userProvider = Provider.of<UserProvider>(context);
|
// final userProvider = Provider.of<UserProvider>(context);
|
||||||
String city = _ciudad.toString();
|
String city = _ciudad.toString();
|
||||||
|
|
||||||
return Scaffold(
|
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/components/primary_btn.dart';
|
||||||
import 'package:prosappco/src/controllers/register_controller.dart';
|
import 'package:prosappco/src/controllers/register_controller.dart';
|
||||||
import 'package:prosappco/src/models/setting_model.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:prosappco/src/screens/web_view.dart';
|
||||||
import 'package:responsive_builder/responsive_builder.dart';
|
import 'package:responsive_builder/responsive_builder.dart';
|
||||||
import 'package:url_launcher/url_launcher.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'),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -261,7 +261,7 @@ class _ServiceScreenState extends State<ServiceScreen> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _checkForUpdate(String? settings) {
|
void _checkForUpdate(String? settings) {
|
||||||
if (appVersion != settings) {
|
if (appVersion == settings) {
|
||||||
showDialog(
|
showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
|
|||||||
Reference in New Issue
Block a user