From 77a6d5057153c3c536de01afc6c91fc812058fc8 Mon Sep 17 00:00:00 2001 From: Vaibhav Surve Date: Tue, 11 Nov 2025 14:31:16 +0530 Subject: [PATCH] added dynamic menu for finance cards as per expense title --- lib/view/finance/finance_screen.dart | 38 +++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/lib/view/finance/finance_screen.dart b/lib/view/finance/finance_screen.dart index 5e72e7c..160e29d 100644 --- a/lib/view/finance/finance_screen.dart +++ b/lib/view/finance/finance_screen.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_lucide/flutter_lucide.dart'; import 'package:get/get.dart'; import 'package:marco/controller/project_controller.dart'; +import 'package:marco/controller/dynamicMenu/dynamic_menu_controller.dart'; import 'package:marco/helpers/utils/mixins/ui_mixin.dart'; import 'package:marco/helpers/widgets/my_card.dart'; import 'package:marco/helpers/widgets/my_spacing.dart'; @@ -17,6 +18,7 @@ class FinanceScreen extends StatefulWidget { class _FinanceScreenState extends State with UIMixin, TickerProviderStateMixin { final projectController = Get.find(); + final DynamicMenuController menuController = Get.put(DynamicMenuController()); late AnimationController _animationController; late Animation _fadeAnimation; @@ -105,10 +107,38 @@ class _FinanceScreenState extends State ), body: FadeTransition( opacity: _fadeAnimation, - child: SingleChildScrollView( - padding: const EdgeInsets.all(16), - child: _buildFinanceModulesCompact(), - ), + child: Obx(() { + if (menuController.isLoading.value) { + return const Center(child: CircularProgressIndicator()); + } + + if (menuController.hasError.value || + menuController.menuItems.isEmpty) { + return const Center( + child: Text( + "Failed to load menus. Please try again later.", + style: TextStyle(color: Colors.red), + ), + ); + } + + // ✅ Only allow finance cards if "Expense" menu is allowed + final isExpenseAllowed = menuController.isMenuAllowed("Expense"); + + if (!isExpenseAllowed) { + return const Center( + child: Text( + "You don’t have access to the Finance section.", + style: TextStyle(color: Colors.grey), + ), + ); + } + + return SingleChildScrollView( + padding: const EdgeInsets.all(16), + child: _buildFinanceModulesCompact(), + ); + }), ), ); }