|
|
@@ -1,7 +1,12 @@
|
|
|
+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 = [
|
|
|
@@ -45,14 +50,16 @@ class MenuStore {
|
|
|
routeName: AppRouteNames.checkin,
|
|
|
icon: Icons.check_circle_outline,
|
|
|
permission: PermissionKeys.inspectionCheckin,
|
|
|
- platform: 0,
|
|
|
+ platform: 1,
|
|
|
+ isPda: false,
|
|
|
),
|
|
|
MenuItem(
|
|
|
name: '样品查询',
|
|
|
routeName: AppRouteNames.sample,
|
|
|
icon: Icons.search,
|
|
|
permission: PermissionKeys.sampleQuery,
|
|
|
- platform: 0,
|
|
|
+ platform: 1,
|
|
|
+ isPda: false,
|
|
|
),
|
|
|
MenuItem(
|
|
|
name: '个体绑定',
|
|
|
@@ -69,4 +76,36 @@ class MenuStore {
|
|
|
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;
|
|
|
+ }
|
|
|
}
|