multiples mejoras añadidas, se retiró la categoría

This commit is contained in:
Abraham
2026-01-13 14:11:03 -08:00
parent cd23fdc071
commit 8612688aa3
8 changed files with 358 additions and 776 deletions

View File

@@ -25,16 +25,19 @@ class _VideosLayoutState extends State<VideosLayout> {
title: 'Dashboard',
icon: Icons.dashboard,
index: 0,
subtitle: 'Visualiza métricas y estadísticas globales de tus contenidos',
),
MenuItem(
title: 'Gestor de Videos',
icon: Icons.video_library,
index: 1,
subtitle: 'Administra, edita y organiza tu biblioteca multimedia',
),
MenuItem(
title: 'Configuración',
icon: Icons.settings,
index: 2,
subtitle: 'Personaliza las preferencias de tu plataforma',
),
];
@@ -65,6 +68,7 @@ class _VideosLayoutState extends State<VideosLayout> {
Widget _buildHeader(bool isMobile) {
final isDark = AppTheme.themeMode == ThemeMode.dark;
final isLightBackground = !isDark;
final currentMenuItem = _menuItems[_selectedMenuIndex];
return Container(
padding: EdgeInsets.all(isMobile ? 16 : 24),
@@ -79,30 +83,85 @@ class _VideosLayoutState extends State<VideosLayout> {
),
child: Row(
children: [
if (isMobile)
if (isMobile) ...[
IconButton(
icon: const Icon(Icons.menu),
color: AppTheme.of(context).primaryText,
onPressed: () => _scaffoldKey.currentState?.openDrawer(),
),
// Logo de EnergyMedia
Image.asset(
isMobile
? 'assets/images/favicon.png'
: isLightBackground
? 'assets/images/logo_nh.png'
: 'assets/images/logo_nh_b.png',
height: isMobile ? 32 : 75,
fit: BoxFit.contain,
),
const Spacer(),
Text(
_menuItems[_selectedMenuIndex].title,
style: AppTheme.of(context).bodyText1.override(
fontFamily: 'Poppins',
color: AppTheme.of(context).secondaryText,
// Logo de EnergyMedia solo en mobile
Image.asset(
'assets/images/favicon.png',
height: 32,
fit: BoxFit.contain,
),
const Spacer(),
Text(
currentMenuItem.title,
style: AppTheme.of(context).bodyText1.override(
fontFamily: 'Poppins',
color: AppTheme.of(context).secondaryText,
),
),
] else ...[
// Desktop: título prominente con subtítulo
Row(
children: [
Container(
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
const Color(0xFF4EC9F5).withOpacity(0.15),
const Color(0xFFFFB733).withOpacity(0.15),
],
),
borderRadius: BorderRadius.circular(12),
border: Border.all(
color: AppTheme.of(context).primaryColor.withOpacity(0.2),
width: 1.5,
),
),
child: Icon(
currentMenuItem.icon,
color: AppTheme.of(context).primaryColor,
size: 26,
),
),
),
const Gap(16),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
currentMenuItem.title,
style: AppTheme.of(context).title2.override(
fontFamily: 'Poppins',
color: AppTheme.of(context).primaryText,
fontWeight: FontWeight.bold,
fontSize: 24,
letterSpacing: 0.5,
),
),
if (currentMenuItem.subtitle != null) ...[
const Gap(4),
Text(
currentMenuItem.subtitle!,
style: AppTheme.of(context).bodyText2.override(
fontFamily: 'Poppins',
color: AppTheme.of(context).tertiaryText,
fontSize: 13,
fontWeight: FontWeight.w400,
),
),
],
],
),
],
),
],
],
),
);
@@ -161,7 +220,7 @@ class _VideosLayoutState extends State<VideosLayout> {
],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
// Logo con container elegante
Container(
@@ -961,10 +1020,12 @@ class MenuItem {
final String title;
final IconData icon;
final int index;
final String? subtitle;
MenuItem({
required this.title,
required this.icon,
required this.index,
this.subtitle,
});
}