123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- import 'package:animate_do/animate_do.dart';
- import 'package:flutter/material.dart';
- class PerfilScreen extends StatefulWidget {
- const PerfilScreen({super.key});
- @override
- State<PerfilScreen> createState() => _PerfilScreenState();
- }
- class _PerfilScreenState extends State<PerfilScreen> {
- @override
- Widget build(BuildContext context) {
- return SlideInRight(
- duration: const Duration(milliseconds: 250),
- child: Scaffold(
- body: Padding(
- padding: const EdgeInsets.symmetric(horizontal: 16),
- child: Column(
- children: [
- // Banner principal con fondo azul
- Container(
- width: double.infinity,
- height: 200,
- decoration: const BoxDecoration(
- color: Colors.blue,
- borderRadius: BorderRadius.only(
- bottomLeft: Radius.circular(20),
- bottomRight: Radius.circular(20),
- ),
- ),
- child: Stack(
- children: [
- // Texto del banner
- const Positioned(
- left: 20,
- top: 60,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text(
- 'Bienvenido!',
- style: TextStyle(
- fontSize: 28,
- fontWeight: FontWeight.bold,
- color: Colors.white,
- ),
- ),
- SizedBox(height: 8),
- Text(
- 'Visitanos el día de hoy para una oferta \n especial en productos seleccionados',
- style: TextStyle(
- fontSize: 24,
- fontWeight: FontWeight.bold,
- color: Colors.white,
- ),
- ),
- ],
- ),
- ),
- // Ilustración de personaje con mochila y teléfono
- Positioned(
- right: 20,
- bottom: 0,
- child: Image.asset(
- 'assets/turquessa_prop.jpg',
- height: 150,
- ),
- ),
- // Icono de bombilla
- Positioned(
- right: 80,
- top: 60,
- child: Container(
- padding: const EdgeInsets.all(8),
- decoration: const BoxDecoration(
- color: Colors.yellow,
- shape: BoxShape.circle,
- ),
- child: const Icon(
- Icons.lightbulb,
- color: Colors.white,
- size: 24,
- ),
- ),
- ),
- ],
- ),
- ),
- //? Informaicon de usuario
- Padding(
- padding: const EdgeInsets.only(top: 16),
- child: Container(
- width: double.infinity,
- padding: EdgeInsets.all(20),
- decoration: BoxDecoration(
- color: Color(0xFFF5F5F5),
- borderRadius: BorderRadius.circular(16),
- ),
- child: Row(
- crossAxisAlignment: CrossAxisAlignment.center,
- children: [
- // Columna izquierda con la información del usuario
- Expanded(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- // Nombre del usuario
- Text(
- 'Usuario Conocido',
- style: TextStyle(
- fontSize: 22,
- fontWeight: FontWeight.bold,
- color: Colors.black87,
- ),
- ),
- SizedBox(height: 8),
- // Correo electrónico
- Text(
- 'atharva@gmail.com',
- style: TextStyle(
- fontSize: 16,
- color: Colors.black54,
- ),
- ),
- SizedBox(height: 8),
- // Año académico
- Text(
- 'Year: be',
- style: TextStyle(
- fontSize: 16,
- color: Colors.black54,
- ),
- ),
- SizedBox(height: 12),
- // Botón de editar
- GestureDetector(
- onTap: () {
- // Acción para editar el perfil
- },
- child: Text(
- 'Edit',
- style: TextStyle(
- fontSize: 16,
- fontWeight: FontWeight.w500,
- color: Colors.blue,
- ),
- ),
- ),
- ],
- ),
- ),
- Container(
- width: 80,
- height: 80,
- child: Image.asset(
- 'assets/user_with_laptop.png',
- fit: BoxFit.cover,
- ),
- ),
- ],
- ),
- ),
- ),
- Padding(
- padding: const EdgeInsets.only(top: 16),
- child: ClipRRect(
- borderRadius: BorderRadius.circular(16),
- child: Container(
- height: 110,
- padding: const EdgeInsets.symmetric(horizontal: 16),
- width: double.infinity,
- color: Colors.white,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- const Row(
- children: [
- Icon(Icons.nights_stay_rounded, size: 36),
- Padding(
- padding: EdgeInsets.only(left: 8),
- child: Text("Modo oscuro",
- style: TextStyle(
- fontSize: 29,
- fontWeight: FontWeight.bold)),
- ),
- ],
- ),
- Switch(
- activeColor: Theme.of(context).primaryColor,
- value: false,
- onChanged: (value) {},
- ),
- ]),
- ),
- ),
- ),
- Padding(
- padding: const EdgeInsets.only(top: 16),
- child: ClipRRect(
- borderRadius: BorderRadius.circular(16),
- child: Container(
- height: 110,
- padding: const EdgeInsets.symmetric(horizontal: 16),
- width: double.infinity,
- color: Colors.white,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- const Row(
- children: [
- Icon(Icons.lock_clock, size: 36),
- Padding(
- padding: EdgeInsets.only(left: 8),
- child: Text("Mis Pedidos",
- style: TextStyle(
- fontSize: 29,
- fontWeight: FontWeight.bold)),
- ),
- ],
- ),
- IconButton(
- onPressed: () {},
- icon:
- const Icon(Icons.arrow_forward_ios_rounded)),
- ]),
- ),
- ),
- ),
- Padding(
- padding: const EdgeInsets.only(top: 16),
- child: ClipRRect(
- borderRadius: BorderRadius.circular(16),
- child: Container(
- height: 110,
- padding: const EdgeInsets.symmetric(horizontal: 16),
- width: double.infinity,
- color: Colors.white,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- const Row(
- children: [
- Icon(Icons.supervised_user_circle_sharp,
- size: 36),
- Padding(
- padding: EdgeInsets.only(left: 8),
- child: Text("Conoce más de nosotros",
- style: TextStyle(
- fontSize: 29,
- fontWeight: FontWeight.bold)),
- ),
- ],
- ),
- IconButton(
- onPressed: () {},
- icon:
- const Icon(Icons.arrow_forward_ios_rounded)),
- ]),
- ),
- ),
- ),
- Padding(
- padding: const EdgeInsets.only(top: 16),
- child: ClipRRect(
- borderRadius: BorderRadius.circular(16),
- child: Container(
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius: BorderRadius.circular(16),
- border: Border.all(color: Colors.red, width: 3),
- ),
- height: 110,
- padding: const EdgeInsets.symmetric(horizontal: 16),
- width: double.infinity,
- child: const Center(
- child: Row(
- mainAxisAlignment: MainAxisAlignment.center,
- crossAxisAlignment: CrossAxisAlignment.center,
- children: [
- Icon(
- Icons.logout_outlined,
- size: 36,
- color: Colors.red,
- ),
- Text(
- "Cerrar Perfil",
- style: TextStyle(
- fontWeight: FontWeight.bold,
- fontSize: 30,
- color: Colors.red),
- ),
- ],
- ),
- )),
- ),
- ),
- ],
- ),
- ),
- ),
- );
- }
- }
|