diff --git a/lib/components/general_drawer.dart b/lib/components/general_drawer.dart index 74800e6..31d34e2 100644 --- a/lib/components/general_drawer.dart +++ b/lib/components/general_drawer.dart @@ -11,6 +11,7 @@ import 'package:prosappco/screens/configuration/configuration_support_screen.dar import 'package:prosappco/screens/professional/professional_denied_screen.dart'; import 'package:prosappco/screens/professional/professional_form_screen.dart'; import 'package:prosappco/screens/professional/professional_pending_screen.dart'; +import 'package:prosappco/screens/professional/professional_profile_screen.dart'; import 'package:prosappco/screens/web/web_view_screen.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:user_repository/user_repository.dart'; @@ -54,6 +55,21 @@ class GeneralDrawer extends StatelessWidget { child: SingleChildScrollView( child: Column( children: [ + shouldProModeActive(context, professionalState) + ? GeneralDrawerItem( + leading: Icons.person_outline_rounded, + label: 'Perfil profesional', + onTap: () { + Navigator.push( + context, + CupertinoPageRoute( + builder: (context) => + const ProfessionalProfileScreen(), + ), + ); + }, + ) + : const SizedBox(), GeneralDrawerItem( leading: Icons.history, label: 'Mis servicios', @@ -108,6 +124,12 @@ class GeneralDrawer extends StatelessWidget { } }, ), + shouldProModeActive(context, professionalState) + ? const GeneralDrawerItem( + label: 'Calendario', + leading: Icons.calendar_month_outlined, + ) + : const SizedBox(), ], ), ), @@ -138,17 +160,18 @@ class GeneralDrawer extends StatelessWidget { buttonOfState(BuildContext context, ProfessionalState state) { return ElevatedButton( onPressed: () { -// get state of bloc by context final myUserState = context.read().state; if (myUserState.status == MyUserStatus.success) { final user = myUserState.user!; switch (user.proState) { case ProState.active: - // Get boc and add event context .read() .add(const SwitchProModeEvent()); + + Navigator.pop(context); + break; case ProState.inactive: Navigator.push( @@ -192,4 +215,8 @@ class GeneralDrawer extends StatelessWidget { color: Colors.white, )); } + + shouldProModeActive(BuildContext context, ProfessionalState state) { + return (state is LoadedModeProState) ? state.isProModeActive : false; + } } diff --git a/lib/components/general_drawer_header.dart b/lib/components/general_drawer_header.dart index 070fb0b..9cc4849 100644 --- a/lib/components/general_drawer_header.dart +++ b/lib/components/general_drawer_header.dart @@ -2,6 +2,8 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:prosappco/blocs/my_user_bloc/my_user_bloc.dart'; +import 'package:prosappco/blocs/professional_bloc/professional_bloc.dart'; +import 'package:prosappco/screens/professional/professional_profile_screen.dart'; import 'package:prosappco/screens/profile/profile_screen.dart'; class GeneralDrawerHeader extends StatelessWidget { @@ -13,28 +15,41 @@ class GeneralDrawerHeader extends StatelessWidget { builder: (context, state) { if (state.status == MyUserStatus.success) { final user = state.user!; - return ListTile( - onTap: () { - Navigator.push( - context, - CupertinoPageRoute( - builder: (BuildContext context) { - return const ProfileScreen(); - }, - ), + return BlocBuilder( + builder: (context, state) { + return ListTile( + onTap: () { + shouldProModeActive(context, state) + ? Navigator.push( + context, + CupertinoPageRoute( + builder: (BuildContext context) { + return const ProfessionalProfileScreen(); + }, + ), + ) + : Navigator.push( + context, + CupertinoPageRoute( + builder: (BuildContext context) { + return const ProfileScreen(); + }, + ), + ); + }, + title: Text(user.name ?? '', + overflow: TextOverflow.ellipsis, + style: const TextStyle(fontWeight: FontWeight.bold)), + subtitle: Text(user.drawerLabel, + overflow: TextOverflow.ellipsis, + style: const TextStyle(fontSize: 12)), + leading: pictureWidget(user.picture, context), + trailing: + const Icon(Icons.keyboard_arrow_right, color: Colors.black), + contentPadding: + const EdgeInsets.symmetric(vertical: 10, horizontal: 15), ); }, - title: Text(user.name ?? '', - overflow: TextOverflow.ellipsis, - style: const TextStyle(fontWeight: FontWeight.bold)), - subtitle: Text(user.drawerLabel, - overflow: TextOverflow.ellipsis, - style: const TextStyle(fontSize: 12)), - leading: pictureWidget(user.picture, context), - trailing: - const Icon(Icons.keyboard_arrow_right, color: Colors.black), - contentPadding: - const EdgeInsets.symmetric(vertical: 10, horizontal: 15), ); } else if (state.status == MyUserStatus.failure) { return const Text('Error obteniendo datos del usuario'); @@ -45,6 +60,10 @@ class GeneralDrawerHeader extends StatelessWidget { ); } + shouldProModeActive(BuildContext context, ProfessionalState state) { + return (state is LoadedModeProState) ? state.isProModeActive : false; + } + Widget pictureWidget(String? pictureUrl, BuildContext context) { ImageProvider? imageProvider; diff --git a/lib/screens/home/home_screen.dart b/lib/screens/home/home_screen.dart index aa6046a..65907e9 100644 --- a/lib/screens/home/home_screen.dart +++ b/lib/screens/home/home_screen.dart @@ -1,4 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:prosappco/blocs/professional_bloc/professional_bloc.dart'; import 'package:prosappco/components/general_drawer.dart'; class HomeScreen extends StatelessWidget { @@ -6,15 +8,33 @@ class HomeScreen extends StatelessWidget { @override Widget build(BuildContext context) { - return SafeArea( - child: Scaffold( - backgroundColor: Theme.of(context).colorScheme.background, - drawer: GeneralDrawer(), - appBar: AppBar(), - body: const Center( - child: Text('Bienvenido'), - ), - ), + return BlocBuilder( + builder: (context, state) { + return SafeArea( + child: shouldProModeActive(context, state) + ? Scaffold( + backgroundColor: Theme.of(context).colorScheme.background, + drawer: GeneralDrawer(), + appBar: AppBar(), + body: const Center( + child: Text('Bienvenido profesional'), + ), + ) + : Scaffold( + backgroundColor: Theme.of(context).colorScheme.background, + drawer: GeneralDrawer(), + appBar: AppBar(), + body: const Center( + child: Text('Bienvenido cliente'), + // child: Text('Bienvenido profesional'), + ), + ), + ); + }, ); } + + shouldProModeActive(BuildContext context, ProfessionalState state) { + return (state is LoadedModeProState) ? state.isProModeActive : false; + } } diff --git a/lib/screens/professional/professional_form_screen.dart b/lib/screens/professional/professional_form_screen.dart index 1edd473..de2fdd5 100644 --- a/lib/screens/professional/professional_form_screen.dart +++ b/lib/screens/professional/professional_form_screen.dart @@ -303,8 +303,7 @@ class _ProfessionalFormScreenState extends State { // elevation: 0, ), child: Container( - constraints: const BoxConstraints( - maxWidth: 300.0, minHeight: 50.0), + constraints: const BoxConstraints(maxWidth: 300.0, minHeight: 50.0), alignment: Alignment.center, child: const Text( 'Enviar a revisión', diff --git a/lib/screens/professional/professional_profile_screen.dart b/lib/screens/professional/professional_profile_screen.dart new file mode 100644 index 0000000..7f823ea --- /dev/null +++ b/lib/screens/professional/professional_profile_screen.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; +import 'package:prosappco/components/general_drawer.dart'; + +class ProfessionalProfileScreen extends StatefulWidget { + const ProfessionalProfileScreen({super.key}); + + @override + State createState() => + _ProfessionalProfileScreenState(); +} + +class _ProfessionalProfileScreenState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Perfil Profesional'), + ), + body: Center( + child: Text('Perfil profesional'), + ), + ); + } +} diff --git a/lib/screens/professional/professional_services_screen.dart b/lib/screens/professional/professional_services_screen.dart new file mode 100644 index 0000000..3c3d4c8 --- /dev/null +++ b/lib/screens/professional/professional_services_screen.dart @@ -0,0 +1,19 @@ +import 'package:flutter/material.dart'; +import 'package:prosappco/components/general_drawer.dart'; + +class ProfessionalServicesScreen extends StatelessWidget { + const ProfessionalServicesScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + drawer: const GeneralDrawer(), + appBar: AppBar( + title: const Text('Solicitudes'), + ), + body: const Center( + child: Text('No tienes solicitudes'), + ), + ); + } +}