157 lines
6.0 KiB
Dart
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),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|