import 'package:flutter/cupertino.dart'; import 'package:flutter/material.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/sing_in_bloc/sign_in_bloc.dart'; import 'package:prosappco/blocs/update_user_info_bloc/update_user_info_bloc.dart'; import 'package:prosappco/screens/profile/profile_screen.dart'; class HomeScreen extends StatefulWidget { const HomeScreen({super.key}); @override State createState() => _HomeScreenState(); } class _HomeScreenState extends State { @override Widget build(BuildContext context) { return BlocListener( listener: (context, state) { if (state is UploadPictureSuccess) { setState(() { context.read().state.user!.picture = state.userImage; }); } }, child: Scaffold( backgroundColor: Theme.of(context).colorScheme.background, drawer: BlocBuilder(builder: (context, state) { if (state.status == MyUserStatus.success) { return Drawer( backgroundColor: Theme.of(context).colorScheme.background, child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Material( color: Theme.of(context).colorScheme.primary, child: InkWell( onTap: () { Navigator.push( context, CupertinoPageRoute( builder: (context) => const ProfileScreen(), ), ); }, child: Container( padding: EdgeInsets.only( top: 20 + MediaQuery.of(context).padding.top, bottom: 20, ), child: Column( children: [ state.user!.picture == "" ? Container( width: 80, height: 80, decoration: BoxDecoration( color: Colors.grey.shade300, shape: BoxShape.circle, ), child: Icon( CupertinoIcons.person, color: Colors.grey.shade400, size: 35, ), ) : Container( width: 80, height: 80, decoration: BoxDecoration( color: Colors.grey, shape: BoxShape.circle, image: DecorationImage( image: NetworkImage( state.user!.picture!, ), fit: BoxFit.cover, ), ), ), const SizedBox(height: 12), Text( context.read().state.user!.name, style: const TextStyle( fontSize: 24, color: Colors.white, ), ), Text( state.user!.email, style: const TextStyle( fontSize: 15, color: Colors.white, ), ) ], ), ), ), ), Container( height: MediaQuery.of(context).size.height, color: Theme.of(context).colorScheme.background, child: ListView( children: [ ListTile( onTap: () { context .read() .add(const SignOutRequired()); }, title: const Text( 'Cerrar Sesión', ), ) ], ), ) ], ), ), ); } else { return Drawer( backgroundColor: Theme.of(context).colorScheme.background, child: const Center( child: CircularProgressIndicator(), )); } }), appBar: AppBar(), body: const Placeholder(), ), ); } }