menu.dart 848 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import 'menu_item.dart';
  2. class Menu {
  3. List<MenuItem>? items;
  4. Menu({
  5. this.items,
  6. });
  7. MenuItem? getMenuItem(String key) {
  8. for (MenuItem menuItem in (items ?? [])) {
  9. if (menuItem.key == key) {
  10. return menuItem;
  11. }
  12. if (menuItem.submenu?.getMenuItem(key) != null) {
  13. return menuItem.submenu?.getMenuItem(key);
  14. }
  15. }
  16. return null;
  17. }
  18. MenuItem? getMenuItemById(int id) {
  19. for (MenuItem menuItem in (items ?? [])) {
  20. if (menuItem.id == id) {
  21. return menuItem;
  22. }
  23. if (menuItem.submenu?.getMenuItemById(id) != null) {
  24. return menuItem.submenu?.getMenuItemById(id);
  25. }
  26. }
  27. return null;
  28. }
  29. Map<String, dynamic> toJson() {
  30. return {
  31. 'items': items?.map((e) => e.toJson()).toList(),
  32. }..removeWhere((key, value) => value == null);
  33. }
  34. }