menu_store.dart 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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.chickenWeighing,
  30. platform: 1,
  31. ),
  32. MenuItem(
  33. name: '个体淘汰',
  34. routeName: AppRouteNames.individualCulling,
  35. icon: Icons.person_remove,
  36. permission: PermissionKeys.chickenCulling,
  37. platform: 1,
  38. ),
  39. MenuItem(
  40. name: '批量淘汰',
  41. routeName: AppRouteNames.batchCulling,
  42. icon: Icons.group_remove,
  43. permission: PermissionKeys.chickenCulling,
  44. platform: 1,
  45. ),
  46. MenuItem(
  47. name: '个体查询',
  48. routeName: AppRouteNames.individualQuery,
  49. icon: Icons.search,
  50. permission: "",
  51. platform: 1,
  52. ),
  53. MenuItem(
  54. name: '点检签到',
  55. routeName: AppRouteNames.checkin,
  56. icon: Icons.check_circle_outline,
  57. permission: PermissionKeys.inspectionCheckin,
  58. platform: 1,
  59. isPda: false,
  60. ),
  61. MenuItem(
  62. name: '样品查询',
  63. routeName: AppRouteNames.sample,
  64. icon: Icons.search,
  65. permission: PermissionKeys.sampleQuery,
  66. platform: 1,
  67. isPda: false,
  68. ),
  69. MenuItem(
  70. name: '个体绑定',
  71. routeName: AppRouteNames.bindwingTagNumWin,
  72. icon: Icons.tag_outlined,
  73. permission: PermissionKeys.bindChicken,
  74. isPda: false,
  75. platform: 2,
  76. ),
  77. MenuItem(
  78. name: '批量淘汰',
  79. routeName: AppRouteNames.batchCullingWin,
  80. icon: Icons.group_remove,
  81. permission: PermissionKeys.chickenCulling,
  82. isPda: false,
  83. platform: 2,
  84. ),
  85. // MenuItem(
  86. // name: '串口配置',
  87. // routeName: AppRouteNames.serialSetting,
  88. // icon: Icons.settings_input_component,
  89. // permission: "",
  90. // isPda: false,
  91. // platform: 2,
  92. // ),
  93. ];
  94. static List<MenuItem> getVisibleMenuItems(WidgetRef ref) {
  95. final authState = ref.watch(authStoreProvider);
  96. final authStore = ref.watch(authStoreProvider.notifier);
  97. final isSuperAdmin = authStore.isSuperAdmin();
  98. // 获取当前平台类型
  99. // 平台类型,0:所有平台,1:Android手机,2:Windows
  100. int currentPlatform = 0;
  101. if (Platform.isAndroid) {
  102. currentPlatform = 1;
  103. } else if (Platform.isWindows) {
  104. currentPlatform = 2;
  105. }
  106. // 根据权限和平台类型过滤菜单项
  107. final visibleMenuItems = MenuStore.menuItems.where((item) {
  108. // 平台过滤
  109. if (item.platform != 0 && item.platform != currentPlatform) {
  110. return false;
  111. }
  112. if (AppConfig.isPda && !item.isPda || !AppConfig.isPda && item.isPda) {
  113. return false;
  114. }
  115. // 权限过滤
  116. if (isSuperAdmin) return true;
  117. if (item.permission == null) return true;
  118. return authState.permissions?.contains(item.permission) ?? false;
  119. }).toList();
  120. return visibleMenuItems;
  121. }
  122. }