Files
prosappweb/lib/ui/layouts/dashboard/dashboard_layout.dart
T
Lizandro GuarnizoandClaude Sonnet 4.6 8aa03f437c fix: simplificar navbar, iconos siempre visibles
- Quitar AnimatedSwitcher/RotationTransition que ocultaba los iconos
- Icono sol/luna y campana con InkWell simple y colores explicitos
- Fondo navbar animado segun tema (isDark)
- DashboardLayout usa scaffoldBackgroundColor del tema

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 08:48:55 -05:00

86 lines
2.5 KiB
Dart

import 'package:prosapp_web_app/providers/sidemenu_provider.dart';
import 'package:prosapp_web_app/ui/shared/navbar.dart';
import 'package:prosapp_web_app/ui/shared/sidebar.dart';
import 'package:flutter/material.dart';
class DashboardLayout extends StatefulWidget {
final Widget child;
const DashboardLayout({super.key, required this.child});
@override
State<DashboardLayout> createState() => _DashboardLayoutState();
}
class _DashboardLayoutState extends State<DashboardLayout>
with SingleTickerProviderStateMixin {
@override
void initState() {
super.initState();
SideMenuProvider.menuController = AnimationController(
vsync: this,
duration: const Duration(milliseconds: 300),
);
}
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
return Scaffold(
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
body: Stack(
children: [
Row(
children: [
if (size.width >= 700) const Sidebar(),
Expanded(
child: Column(
children: [
// Navbar
const Navbar(),
// View
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 20,
vertical: 10,
),
child: widget.child,
),
),
],
),
)
],
),
if (size.width < 700)
AnimatedBuilder(
animation: SideMenuProvider.menuController,
builder: (context, _) => Stack(
children: [
if (SideMenuProvider.isOpen)
Opacity(
opacity: SideMenuProvider.opacity.value,
child: GestureDetector(
onTap: () => SideMenuProvider.closeMenu(),
child: Container(
width: size.width,
height: size.height,
color: Colors.black26,
),
),
),
Transform.translate(
offset: Offset(SideMenuProvider.movement.value, 0),
child: const Sidebar(),
),
],
),
),
],
),
);
}
}