| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- import 'dart:io' show Platform;
- import 'package:chicken_farm/core/config/app_config.dart';
- import 'package:chicken_farm/modes/menu_item.dart';
- import 'package:chicken_farm/routes/app_routes.dart';
- import 'package:chicken_farm/stores/auth_store.dart';
- import 'package:flutter/material.dart';
- import 'package:chicken_farm/core/permissions/permission_keys.dart';
- import 'package:flutter_riverpod/flutter_riverpod.dart';
- class MenuStore {
- static const List<MenuItem> menuItems = [
- MenuItem(
- name: '个体绑定',
- routeName: AppRouteNames.bindChicken,
- icon: Icons.tag_outlined,
- permission: PermissionKeys.bindChicken,
- platform: 1,
- ),
- MenuItem(
- name: '换笼管理',
- routeName: AppRouteNames.cageChange,
- icon: Icons.compare_arrows,
- permission: PermissionKeys.cageChange,
- platform: 1,
- ),
- MenuItem(
- name: '个体称重',
- routeName: AppRouteNames.individualWeighing,
- icon: Icons.scale,
- permission: PermissionKeys.individualWeighing,
- platform: 1,
- ),
- MenuItem(
- name: '个体淘汰',
- routeName: AppRouteNames.individualCulling,
- icon: Icons.person_remove,
- permission: PermissionKeys.individualCulling,
- platform: 1,
- ),
- MenuItem(
- name: '批量淘汰',
- routeName: AppRouteNames.batchCulling,
- icon: Icons.group_remove,
- permission: PermissionKeys.batchCulling,
- platform: 1,
- ),
- MenuItem(
- name: '点检签到',
- routeName: AppRouteNames.checkin,
- icon: Icons.check_circle_outline,
- permission: PermissionKeys.inspectionCheckin,
- platform: 1,
- isPda: false,
- ),
- MenuItem(
- name: '样品查询',
- routeName: AppRouteNames.sample,
- icon: Icons.search,
- permission: PermissionKeys.sampleQuery,
- platform: 1,
- isPda: false,
- ),
- MenuItem(
- name: '个体绑定',
- routeName: AppRouteNames.bindwingTagNumWin,
- icon: Icons.tag_outlined,
- permission: PermissionKeys.bindChicken,
- platform: 2,
- ),
- MenuItem(
- name: '批量淘汰',
- routeName: AppRouteNames.batchCullingWin,
- icon: Icons.group_remove,
- permission: PermissionKeys.batchCulling,
- platform: 2,
- ),
- ];
- static List<MenuItem> getVisibleMenuItems(WidgetRef ref) {
- final authState = ref.watch(authStoreProvider);
- final authStore = ref.watch(authStoreProvider.notifier);
- final isSuperAdmin = authStore.isSuperAdmin();
- // 获取当前平台类型
- // 平台类型,0:所有平台,1:Android手机,2:Windows
- int currentPlatform = 0;
- if (Platform.isAndroid) {
- currentPlatform = 1;
- } else if (Platform.isWindows) {
- currentPlatform = 2;
- }
- // 根据权限和平台类型过滤菜单项
- final visibleMenuItems = MenuStore.menuItems.where((item) {
- // 平台过滤
- if (item.platform != 0 && item.platform != currentPlatform) {
- return false;
- }
- if (AppConfig.isPda && !item.isPda || !AppConfig.isPda && item.isPda) {
- return false;
- }
- // 权限过滤
- if (isSuperAdmin) return true;
- if (item.permission == null) return true;
- return authState.permissions?.contains(item.permission) ?? false;
- }).toList();
- return visibleMenuItems;
- }
- }
|