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 { const GeneralDrawerHeader({super.key}); @override Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { if (state.status == MyUserStatus.success) { final user = state.user!; 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), ); }, ); } else if (state.status == MyUserStatus.failure) { return const Text('Error obteniendo datos del usuario'); } else { return const CircularProgressIndicator(); } }, ); } shouldProModeActive(BuildContext context, ProfessionalState state) { return (state is LoadedModeProState) ? state.isProModeActive : false; } Widget pictureWidget(String? pictureUrl, BuildContext context) { ImageProvider? imageProvider; if (pictureUrl != null && pictureUrl.isNotEmpty) { imageProvider = NetworkImage(pictureUrl); } return Hero( tag: 'picture-profile', child: pictureContainerWidget( imageProvider, ), ); } Widget pictureContainerWidget(ImageProvider? imageProvider) { final image = imageProvider == null ? null : DecorationImage( image: imageProvider, fit: BoxFit.contain, ); final widget = image == null ? Icon( CupertinoIcons.person, color: Colors.grey.shade400, size: 40, ) : null; return Container( width: 60, height: 60, decoration: BoxDecoration( color: Colors.grey.shade300, shape: BoxShape.circle, image: image, ), child: widget, ); } }