menu_buttons.dart 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import 'package:chicken_farm/stores/menu_store.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter_riverpod/flutter_riverpod.dart';
  4. import 'package:go_router/go_router.dart';
  5. class MenuButtons extends ConsumerWidget {
  6. const MenuButtons({super.key});
  7. @override
  8. Widget build(BuildContext context, WidgetRef ref) {
  9. final visibleMenuItems = MenuStore.getVisibleMenuItems(ref);
  10. final screenWidth = MediaQuery.of(context).size.width;
  11. final buttonWidth = screenWidth * 0.8;
  12. return SingleChildScrollView(
  13. child: Center(
  14. child: Column(
  15. mainAxisAlignment: MainAxisAlignment.center,
  16. children: [
  17. for (var i = 0; i < visibleMenuItems.length; i++) ...[
  18. SizedBox(
  19. width: buttonWidth,
  20. height: 50,
  21. child: ElevatedButton.icon(
  22. onPressed: () {
  23. Future.delayed(const Duration(milliseconds: 100), () {
  24. if (context.mounted) {
  25. context.pushNamed(visibleMenuItems[i].routeName);
  26. }
  27. });
  28. },
  29. icon: visibleMenuItems[i].icon != null
  30. ? Icon(visibleMenuItems[i].icon)
  31. : const SizedBox.shrink(),
  32. label: Text(visibleMenuItems[i].name),
  33. ),
  34. ),
  35. if (i < visibleMenuItems.length - 1) const SizedBox(height: 20),
  36. ],
  37. ],
  38. ),
  39. ),
  40. );
  41. }
  42. }