This commit is contained in:
Felipe
2024-02-19 20:36:45 -05:00
parent 997c6047bb
commit 29d18e93e0
15 changed files with 462 additions and 208 deletions
+10 -21
View File
@@ -10,7 +10,7 @@ import 'package:prosappco/screens/authentication/sign_up_screen.dart';
class SignScreen extends StatefulWidget {
final int initialIndex;
SignScreen({super.key, required this.initialIndex});
const SignScreen({super.key, required this.initialIndex});
@override
State<SignScreen> createState() => _SignScreenState();
@@ -48,19 +48,22 @@ class _SignScreenState extends State<SignScreen> with TickerProviderStateMixin {
color: Theme.of(context).colorScheme.tertiary,
child: Column(
children: [
Center(
child: Image(
width: width * 0.7,
image: AssetImage('images/logo_prosapp.png'),
Container(
color: Theme.of(context).colorScheme.tertiary,
padding: const EdgeInsets.only(bottom: 20.0),
child: Center(
child: Image(
width: width * 0.7,
image: const AssetImage('images/logo_prosapp.png'),
),
),
),
SizedBox(height: 20),
TabBar(
controller: tabController,
unselectedLabelColor:
Theme.of(context).colorScheme.onBackground,
labelColor: Theme.of(context).colorScheme.onBackground,
tabs: [
tabs: const [
Padding(
padding: EdgeInsets.all(12.0),
child: Text(
@@ -102,20 +105,6 @@ class _SignScreenState extends State<SignScreen> with TickerProviderStateMixin {
Injector.appInstance.get<SignUpBloc>(),
child: SignUpScreen(),
),
// BlocProvider<SignInBloc>(
// create: (context) => SignInBloc(
// userRepository: context
// .read<AuthenticationBloc>()
// .userRepository),
// child: SignInScreen(),
// ),
// BlocProvider<SignUpBloc>(
// create: (context) => SignUpBloc(
// userRepository: context
// .read<AuthenticationBloc>()
// .userRepository),
// child: SignUpScreen(),
// ),
]),
)
],
+282 -94
View File
@@ -6,124 +6,312 @@ import 'package:intl_phone_field/intl_phone_field.dart';
import 'package:prosappco/screens/authentication/sign_screen.dart';
class WelcomeScreen extends StatelessWidget {
const WelcomeScreen({super.key});
const WelcomeScreen({Key? key});
@override
Widget build(BuildContext context) {
double width = MediaQuery.of(context).size.width;
return Scaffold(
backgroundColor: Theme.of(context).colorScheme.surface,
backgroundColor: Theme.of(context).colorScheme.tertiary,
body: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
color: Theme.of(context).colorScheme.tertiary,
child: Column(
children: [
const SizedBox(height: 20),
Center(
child: Image(
width: width * 0.7,
image: const AssetImage('images/logo_prosapp.png'),
),
),
const SizedBox(height: 20),
],
),
),
SizedBox(
width: double.infinity,
child: Text(
'Iniciar sesión',
style: TextStyle(
// fontSize: 30,
fontSize: width * 0.08,
fontWeight: FontWeight.bold,
Padding(
padding: const EdgeInsets.symmetric(vertical: 20),
child: Center(
child: Image(
width: width * 0.7,
image: const AssetImage('images/logo_prosapp.png'),
),
),
),
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
const SizedBox(height: 10),
SizedBox(
width: double.infinity,
child: Text(
'Numero de celular',
style: TextStyle(
fontSize: width * 0.045,
color: Theme.of(context).colorScheme.onBackground,
),
),
),
Form(
child: IntlPhoneField(
initialCountryCode: 'CO',
keyboardType: TextInputType.number,
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
),
),
Text(
'Un código será enviado a este numero de celular.',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 13.0,
color: Theme.of(context).colorScheme.onBackground,
),
),
TextButton(
onPressed: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) => SignScreen(initialIndex: 0),
child: Container(
decoration: const BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(60),
topRight: Radius.circular(60),
),
),
child: Padding(
padding:
const EdgeInsets.symmetric(horizontal: 30, vertical: 15),
child: SingleChildScrollView(
child: Column(
children: [
SizedBox(
width: double.infinity,
child: Text(
'Iniciar sesión',
style: TextStyle(
// fontSize: 30,
fontSize: width * 0.08,
fontWeight: FontWeight.bold,
),
),
);
},
child: Text(
'Inicia sesión con tu correo electrónico',
style: TextStyle(
fontSize: width * 0.04,
),
),
),
RichText(
text: TextSpan(
style: const TextStyle(
fontSize: 16.0,
color: Color(0xFF65676B),
fontFamily: 'Poppins',
const SizedBox(height: 10),
SizedBox(
width: double.infinity,
child: Text(
'Numero de celular',
style: TextStyle(
fontSize: width * 0.045,
color: Theme.of(context).colorScheme.onBackground,
),
),
),
children: [
const TextSpan(text: '¿No estás registrado? '),
TextSpan(
text: 'Regístrate',
Form(
child: IntlPhoneField(
initialCountryCode: 'CO',
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.digitsOnly
],
),
),
Text(
'Un código será enviado a este numero de celular.',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 13.0,
color: Theme.of(context).colorScheme.onBackground,
),
),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) =>
const SignScreen(initialIndex: 1),
),
);
},
child: const Text('Iniciar Sesión'),
),
TextButton(
onPressed: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) =>
const SignScreen(initialIndex: 0),
),
);
},
child: Text(
'Inicia sesión con tu correo electrónico',
style: TextStyle(
fontSize: width * 0.04,
color: Colors.blue,
fontWeight: FontWeight.w600,
),
recognizer: TapGestureRecognizer()
..onTap = () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) =>
SignScreen(initialIndex: 1),
),
);
},
),
],
),
),
RichText(
text: TextSpan(
style: const TextStyle(
fontSize: 16.0,
color: Color(0xFF65676B),
fontFamily: 'Poppins',
),
children: [
const TextSpan(text: '¿No estás registrado? '),
TextSpan(
text: 'Regístrate',
style: TextStyle(
fontSize: width * 0.04,
color: Colors.blue,
fontWeight: FontWeight.w600,
),
recognizer: TapGestureRecognizer()
..onTap = () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) =>
SignScreen(initialIndex: 1),
),
);
},
),
],
),
),
],
),
],
),
),
),
),
)
],
),
);
// Scaffold(
// backgroundColor: Theme.of(context).colorScheme.surface,
// body: Column(
// children: [
// Container(
// color: Theme.of(context).colorScheme.tertiary,
// child: Column(
// children: [
// const SizedBox(height: 20),
// Center(
// child: Image(
// width: width * 0.7,
// image: const AssetImage('images/logo_prosapp.png'),
// ),
// ),
// const SizedBox(height: 20),
// ],
// ),
// ),
// SizedBox(
// width: double.infinity,
// child: Text(
// 'Iniciar sesión',
// style: TextStyle(
// // fontSize: 30,
// fontSize: width * 0.08,
// fontWeight: FontWeight.bold,
// ),
// ),
// ),
// Expanded(
// child: SingleChildScrollView(
// child: Column(
// children: [
// const SizedBox(height: 10),
// SizedBox(
// width: double.infinity,
// child: Text(
// 'Numero de celular',
// style: TextStyle(
// fontSize: width * 0.045,
// color: Theme.of(context).colorScheme.onBackground,
// ),
// ),
// ),
// Form(
// child: IntlPhoneField(
// initialCountryCode: 'CO',
// keyboardType: TextInputType.number,
// inputFormatters: [FilteringTextInputFormatter.digitsOnly],
// ),
// ),
// Text(
// 'Un código será enviado a este numero de celular.',
// textAlign: TextAlign.center,
// style: TextStyle(
// fontSize: 13.0,
// color: Theme.of(context).colorScheme.onBackground,
// ),
// ),
// TextButton(
// onPressed: () {
// Navigator.push(
// context,
// CupertinoPageRoute(
// builder: (context) => SignScreen(initialIndex: 0),
// ),
// );
// },
// child: Text(
// 'Inicia sesión con tu correo electrónico',
// style: TextStyle(
// fontSize: width * 0.04,
// ),
// ),
// ),
// RichText(
// text: TextSpan(
// style: const TextStyle(
// fontSize: 16.0,
// color: Color(0xFF65676B),
// fontFamily: 'Poppins',
// ),
// children: [
// const TextSpan(text: '¿No estás registrado? '),
// TextSpan(
// text: 'Regístrate',
// style: TextStyle(
// fontSize: width * 0.04,
// color: Colors.blue,
// fontWeight: FontWeight.w600,
// ),
// recognizer: TapGestureRecognizer()
// ..onTap = () {
// Navigator.push(
// context,
// CupertinoPageRoute(
// builder: (context) =>
// SignScreen(initialIndex: 1),
// ),
// );
// },
// ),
// ],
// ),
// ),
// ],
// ),
// ),
// ),
// ],
// ),
// );
// Scaffold(
// backgroundColor: Theme.of(context).colorScheme.surface,
// body: ListView(
// children: [
// Container(
// color: Theme.of(context).colorScheme.tertiary,
// padding: const EdgeInsets.symmetric(vertical: 20.0),
// child: Center(
// child: Image(
// width: width * 0.7,
// image: const AssetImage('images/logo_prosapp.png'),
// ),
// ),
// ),
// Container(
// decoration: const BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.only(
// topLeft: Radius.circular(60),
// topRight: Radius.circular(60),
// ),
// ),
// child: Padding(
// padding: const EdgeInsets.all(20.0),
// child: Column(
// mainAxisAlignment: MainAxisAlignment.center,
// children: [
// const TextField(
// decoration: InputDecoration(
// labelText: 'Usuario',
// border: OutlineInputBorder(),
// ),
// ),
// const SizedBox(height: 20.0),
// const TextField(
// decoration: InputDecoration(
// labelText: 'Contraseña',
// border: OutlineInputBorder(),
// ),
// obscureText: true,
// ),
// const SizedBox(height: 20.0),
//
// ],
// ),
// ),
// ),
// ],
// ),
// );
}
}
@@ -125,9 +125,12 @@
// }
// }
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:prosappco/blocs/authentication_bloc/authentication_bloc.dart';
import 'package:injector/injector.dart';
import 'package:prosappco/blocs/setting_bloc/setting_bloc.dart';
import 'package:prosappco/components/general_drawer_item.dart';
class ConfigurationScreen extends StatelessWidget {
@@ -135,36 +138,45 @@ class ConfigurationScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocListener<AuthenticationBloc, AuthenticationState>(
listener: (context, state) {
if (state.status == AuthenticationStatus.unauthenticated) {
Navigator.pop(context);
}
},
child: Scaffold(
appBar: AppBar(
title: const Text('Configuración'),
final settingBloc = Injector.appInstance.get<SettingBloc>();
return BlocProvider<SettingBloc>(
create: (context) => settingBloc,
child: BlocListener<SettingBloc, SettingState>(
listener: (context, state) {
if (state is SettingLogoutSuccess) {
Navigator.pop(context);
}
},
child: Scaffold(
appBar: AppBar(
title: const Text('Configuración'),
),
body: ListView(
children: [
GeneralDrawerItem(
label: 'Acerca de la aplicación',
onTap: () {},
trailing: true,
),
GeneralDrawerItem(
label: 'Cerrar sesión',
onTap: () {
try {
settingBloc.add(SettingLogoutRequest());
} catch (e) {
log('xd conigura ${e.toString()}');
}
},
),
GeneralDrawerItem(
label: 'Eliminar cuenta',
onTap: () {},
color: Theme.of(context).colorScheme.error,
)
],
),
),
body: ListView(children: [
GeneralDrawerItem(
label: 'Acerca de la aplicación',
onTap: () {},
trailing: true,
),
GeneralDrawerItem(
label: 'Cerrar sesión',
onTap: () {
context
.read<AuthenticationBloc>()
.add(AuthenticationLogoutRequested());
},
),
GeneralDrawerItem(
label: 'Eliminar cuenta',
onTap: () {},
color: Theme.of(context).colorScheme.error,
)
]),
),
);
}
+4 -4
View File
@@ -3,7 +3,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:image_picker/image_picker.dart';
import 'package:prosappco/blocs/my_user_bloc/my_user_bloc.dart';
import 'package:prosappco/blocs/update_user_info_bloc/update_user_info_bloc.dart';
import 'package:prosappco/blocs/profile_bloc/profile_bloc.dart';
import 'package:prosappco/src/components/pop_appbar.dart';
class ProfileScreen extends StatefulWidget {
@@ -24,7 +24,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
@override
Widget build(BuildContext context) {
return BlocListener<UpdateUserInfoBloc, UpdateUserInfoState>(
return BlocListener<ProfileBloc, ProfileState>(
listener: (context, state) {
if (state is UploadPictureSuccess) {
setState(() {});
@@ -57,7 +57,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
);
if (image != null) {
context.read<UpdateUserInfoBloc>().add(
context.read<ProfileBloc>().add(
UploadPicture(image.path, state.user!.id),
);
}
@@ -146,7 +146,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
),
ElevatedButton(
onPressed: () {
context.read<UpdateUserInfoBloc>().add(
context.read<ProfileBloc>().add(
UpdateUserInfo(state.user!.id, _nameController.text));
},
child: const Text('Guardar'),