import 'package:flutter/material.dart'; import 'package:onufitness/services/logger_service.dart'; import 'package:get/get.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:onufitness/constants/color_constant.dart'; import 'package:onufitness/controller/get_user_data_controller.dart'; import 'package:onufitness/screens/chat/controllers/chat_controller.dart'; import 'package:onufitness/screens/echoboard/controllers/connection_and_tribe_controller.dart'; import 'package:onufitness/screens/echoboard/controllers/echoboard_controller.dart'; import 'package:onufitness/screens/goals/controllers/goal_controller.dart'; import 'package:onufitness/screens/home/controllers/home_controller.dart'; import 'package:onufitness/screens/home/widgets/challenge_pie_chart_section.dart'; import 'package:onufitness/screens/home/widgets/connection_report_section.dart'; import 'package:onufitness/screens/home/widgets/goal_pie_chart_section.dart'; import 'package:onufitness/screens/home/widgets/overview_section.dart'; import 'package:onufitness/screens/home/widgets/top_five_post_section.dart'; import 'package:onufitness/screens/home/widgets/welcome_header_section.dart'; import 'package:onufitness/screens/navbar/bottom_nav_bar.dart'; import 'package:onufitness/screens/rise/controllers/rise_controller.dart'; import 'package:onufitness/services/notification_services/notification_service.dart'; class FitnessDashboard extends StatefulWidget { const FitnessDashboard({super.key}); @override State createState() => _FitnessDashboardState(); } class _FitnessDashboardState extends State { final logger = LoggerService(); late final FitnessController controller; late final EchoBoardController echoBoardController; late final NavigationController navController; late final GetUserDetailsController getUserDetailsController; late final GoalController goalController; late final SocialConnectionController socialConnectionController; late final RiseController riseController; @override void initState() { super.initState(); if (!Get.isRegistered()) { Get.put(FitnessController()); } controller = Get.find(); //....................................................................... if (!Get.isRegistered()) { Get.put(RiseController()); } riseController = Get.find(); //....................................................................... if (!Get.isRegistered()) { Get.put(SocialConnectionController()); } socialConnectionController = Get.find(); //....................................................................... if (!Get.isRegistered()) { Get.put(GoalController()); } goalController = Get.find(); //....................................................................... if (!Get.isRegistered()) { Get.put(EchoBoardController()); } echoBoardController = Get.find(); //....................................................................... if (!Get.isRegistered()) { Get.put(NavigationController()); } navController = Get.find(); //....................................................................... if (!Get.isRegistered()) { Get.put(ChatController()); } //....................................................................... if (!Get.isRegistered()) { Get.put(NotificationService()); } //................................................................................. // Initialize GetUserDetailsController................ if (!Get.isRegistered()) { Get.put(GetUserDetailsController()); } getUserDetailsController = Get.find(); // Call fetchUserDetails API after the frame is built WidgetsBinding.instance.addPostFrameCallback((_) { _fetchUserDetails(); }); } Future _fetchUserDetails() async { try { await getUserDetailsController.fetchUserDetails(); } catch (e) { logger.error("Error fetching user details: $e"); } } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: const Color(0xFFF8F9FA), body: RefreshIndicator( onRefresh: () => controller.refreshDashboard(), color: Color(primaryColor), child: SingleChildScrollView( padding: EdgeInsets.all(20.w), physics: const AlwaysScrollableScrollPhysics(), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ HeaderSection(), SizedBox(height: 30.h), OverviewSection( controller: controller, bottomNavController: navController, goalController: goalController, socialConnectionController: socialConnectionController, ), SizedBox(height: 30.h), GoalPieChartSection( controller: controller, bottomNavController: navController, goalController: goalController, ), SizedBox(height: 30.h), ChallengePieChartSection( controller: controller, riseController: riseController, ), SizedBox(height: 30.h), ConnectionReportSection( controller: controller, socialConnectionController: socialConnectionController, ), SizedBox(height: 30.h), TopPostSection( controller: controller, echoBoardController: echoBoardController, navController: navController, ), SizedBox(height: 30.h), ], ), ), ), ); } }