2026-01-13 11:36:24 +05:30

157 lines
6.0 KiB
Dart

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<FitnessDashboard> createState() => _FitnessDashboardState();
}
class _FitnessDashboardState extends State<FitnessDashboard> {
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<FitnessController>()) {
Get.put(FitnessController());
}
controller = Get.find<FitnessController>();
//.......................................................................
if (!Get.isRegistered<RiseController>()) {
Get.put(RiseController());
}
riseController = Get.find<RiseController>();
//.......................................................................
if (!Get.isRegistered<SocialConnectionController>()) {
Get.put(SocialConnectionController());
}
socialConnectionController = Get.find<SocialConnectionController>();
//.......................................................................
if (!Get.isRegistered<GoalController>()) {
Get.put(GoalController());
}
goalController = Get.find<GoalController>();
//.......................................................................
if (!Get.isRegistered<EchoBoardController>()) {
Get.put(EchoBoardController());
}
echoBoardController = Get.find<EchoBoardController>();
//.......................................................................
if (!Get.isRegistered<NavigationController>()) {
Get.put(NavigationController());
}
navController = Get.find<NavigationController>();
//.......................................................................
if (!Get.isRegistered<ChatController>()) {
Get.put(ChatController());
}
//.......................................................................
if (!Get.isRegistered<NotificationService>()) {
Get.put(NotificationService());
}
//.................................................................................
// Initialize GetUserDetailsController................
if (!Get.isRegistered<GetUserDetailsController>()) {
Get.put(GetUserDetailsController());
}
getUserDetailsController = Get.find<GetUserDetailsController>();
// Call fetchUserDetails API after the frame is built
WidgetsBinding.instance.addPostFrameCallback((_) {
_fetchUserDetails();
});
}
Future<void> _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),
],
),
),
),
);
}
}