app_drawer.dart 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import 'package:flutter/material.dart';
  2. import '../../database/database.dart';
  3. class AppDrawer extends StatelessWidget {
  4. final Agente? agente;
  5. final VoidCallback? onDashboard;
  6. final VoidCallback? onOrders;
  7. final VoidCallback? onCustomers;
  8. final VoidCallback? onCatalog;
  9. final VoidCallback? onPromotions;
  10. final VoidCallback? onPayments;
  11. final VoidCallback? onStatistics;
  12. final VoidCallback? onSync;
  13. final VoidCallback? onLogout;
  14. const AppDrawer({
  15. super.key,
  16. this.agente,
  17. this.onDashboard,
  18. this.onOrders,
  19. this.onCustomers,
  20. this.onCatalog,
  21. this.onPromotions,
  22. this.onPayments,
  23. this.onStatistics,
  24. this.onSync,
  25. this.onLogout,
  26. });
  27. @override
  28. Widget build(BuildContext context) {
  29. final theme = Theme.of(context);
  30. return Drawer(
  31. child: ListView(
  32. padding: EdgeInsets.zero,
  33. children: [
  34. DrawerHeader(
  35. decoration: BoxDecoration(color: theme.colorScheme.primaryContainer),
  36. child: Column(
  37. crossAxisAlignment: CrossAxisAlignment.start,
  38. mainAxisAlignment: MainAxisAlignment.end,
  39. children: [
  40. CircleAvatar(
  41. radius: 28,
  42. backgroundColor: theme.colorScheme.primary,
  43. child: Text(
  44. agente?.ragioneSociale?.substring(0, 1).toUpperCase() ?? 'A',
  45. style: TextStyle(
  46. fontSize: 24,
  47. color: theme.colorScheme.onPrimary,
  48. ),
  49. ),
  50. ),
  51. const SizedBox(height: 8),
  52. Text(
  53. agente?.ragioneSociale ?? 'Agente',
  54. style: theme.textTheme.titleMedium?.copyWith(
  55. color: theme.colorScheme.onPrimaryContainer,
  56. ),
  57. ),
  58. Text(
  59. 'Cod. ${agente?.codAgente ?? ''}',
  60. style: theme.textTheme.bodySmall?.copyWith(
  61. color: theme.colorScheme.onPrimaryContainer.withAlpha(180),
  62. ),
  63. ),
  64. ],
  65. ),
  66. ),
  67. _item(Icons.dashboard_outlined, 'Dashboard', onDashboard),
  68. _item(Icons.receipt_long_outlined, 'Ordini', onOrders),
  69. _item(Icons.people_outline, 'Clienti', onCustomers),
  70. _item(Icons.inventory_2_outlined, 'Catalogo', onCatalog),
  71. _item(Icons.local_offer_outlined, 'Promozioni', onPromotions),
  72. _item(Icons.account_balance_wallet_outlined, 'Scadenze', onPayments),
  73. _item(Icons.bar_chart_outlined, 'Statistiche', onStatistics),
  74. _item(Icons.sync_outlined, 'Sincronizzazione', onSync),
  75. const Divider(),
  76. _item(Icons.logout, 'Logout', onLogout),
  77. ],
  78. ),
  79. );
  80. }
  81. Widget _item(IconData icon, String label, VoidCallback? onTap) {
  82. return ListTile(
  83. leading: Icon(icon),
  84. title: Text(label),
  85. onTap: onTap,
  86. );
  87. }
  88. }