menu_store.dart 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import 'dart:io' show Platform;
  2. import 'package:chicken_farm/core/config/app_config.dart';
  3. import 'package:chicken_farm/modes/menu_item.dart';
  4. import 'package:chicken_farm/routes/app_routes.dart';
  5. import 'package:chicken_farm/stores/auth_store.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:chicken_farm/core/permissions/permission_keys.dart';
  8. import 'package:flutter_riverpod/flutter_riverpod.dart';
  9. class MenuStore {
  10. static const List<MenuItem> menuItems = [
  11. MenuItem(
  12. name: '个体绑定',
  13. routeName: AppRouteNames.bindChicken,
  14. icon: Icons.tag_outlined,
  15. permission: PermissionKeys.bindChicken,
  16. platform: 1,
  17. ),
  18. MenuItem(
  19. name: '换笼管理',
  20. routeName: AppRouteNames.cageChange,
  21. icon: Icons.compare_arrows,
  22. permission: PermissionKeys.cageChange,
  23. platform: 1,
  24. ),
  25. MenuItem(
  26. name: '个体称重',
  27. routeName: AppRouteNames.individualWeighing,
  28. icon: Icons.scale,
  29. permission: PermissionKeys.individualWeighing,
  30. platform: 1,
  31. ),
  32. MenuItem(
  33. name: '个体淘汰',
  34. routeName: AppRouteNames.individualCulling,
  35. icon: Icons.person_remove,
  36. permission: PermissionKeys.individualCulling,
  37. platform: 1,
  38. ),
  39. MenuItem(
  40. name: '批量淘汰',
  41. routeName: AppRouteNames.batchCulling,
  42. icon: Icons.group_remove,
  43. permission: PermissionKeys.batchCulling,
  44. platform: 1,
  45. ),
  46. MenuItem(
  47. name: '点检签到',
  48. routeName: AppRouteNames.checkin,
  49. icon: Icons.check_circle_outline,
  50. permission: PermissionKeys.inspectionCheckin,
  51. platform: 1,
  52. isPda: false,
  53. ),
  54. MenuItem(
  55. name: '样品查询',
  56. routeName: AppRouteNames.sample,
  57. icon: Icons.search,
  58. permission: PermissionKeys.sampleQuery,
  59. platform: 1,
  60. isPda: false,
  61. ),
  62. MenuItem(
  63. name: '个体绑定',
  64. routeName: AppRouteNames.bindwingTagNumWin,
  65. icon: Icons.tag_outlined,
  66. permission: PermissionKeys.bindChicken,
  67. platform: 2,
  68. ),
  69. MenuItem(
  70. name: '批量淘汰',
  71. routeName: AppRouteNames.batchCullingWin,
  72. icon: Icons.group_remove,
  73. permission: PermissionKeys.batchCulling,
  74. platform: 2,
  75. ),
  76. ];
  77. static List<MenuItem> getVisibleMenuItems(WidgetRef ref) {
  78. final authState = ref.watch(authStoreProvider);
  79. final authStore = ref.watch(authStoreProvider.notifier);
  80. final isSuperAdmin = authStore.isSuperAdmin();
  81. // 获取当前平台类型
  82. // 平台类型,0:所有平台,1:Android手机,2:Windows
  83. int currentPlatform = 0;
  84. if (Platform.isAndroid) {
  85. currentPlatform = 1;
  86. } else if (Platform.isWindows) {
  87. currentPlatform = 2;
  88. }
  89. // 根据权限和平台类型过滤菜单项
  90. final visibleMenuItems = MenuStore.menuItems.where((item) {
  91. // 平台过滤
  92. if (item.platform != 0 && item.platform != currentPlatform) {
  93. return false;
  94. }
  95. if (AppConfig.isPda && !item.isPda || !AppConfig.isPda && item.isPda) {
  96. return false;
  97. }
  98. // 权限过滤
  99. if (isSuperAdmin) return true;
  100. if (item.permission == null) return true;
  101. return authState.permissions?.contains(item.permission) ?? false;
  102. }).toList();
  103. return visibleMenuItems;
  104. }
  105. }