import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:onufitness/constants/color_constant.dart'; import 'package:onufitness/constants/constant.dart'; import 'package:onufitness/screens/accounts/Controllers/trainee_account_controller.dart'; import 'package:onufitness/widgets/Dropdowns/custom_normal_hintext_dropdown.dart'; import 'package:onufitness/widgets/appbars/custom_appbar.dart'; class PreferredFitnessgoalScreen extends StatelessWidget { PreferredFitnessgoalScreen({super.key}); final controller = Get.put(TraineeAccountController()); @override Widget build(BuildContext context) { return Obx(() { bool isInitialLoading = controller.isFitnessGoalsLoading.value || controller.isMyFitnessGoalLoading.value; return Stack( children: [ Scaffold( backgroundColor: appBarBackgroundColor, appBar: CustomAppBar( title: "Preferred fitness goal", backgroundColor: appBarBackgroundColor, textColor: appbarTextColor, titleFontSize: 18.sp, leading: IconButton( onPressed: () { Get.back(); }, icon: const Icon(Icons.arrow_back_ios), ), actions: [ Obx( () => controller.isUpdateFitneesGoalLoading.value ? Padding( padding: EdgeInsets.only(right: 10.w), child: SizedBox( height: 20.h, width: 20.w, child: const CircularProgressIndicator( color: Colors.black, strokeWidth: 2, ), ), ) : Padding( padding: EdgeInsets.only(right: 10.w), child: TextButton( onPressed: () async { await controller.updateMyFitnessGoalApiCall(); }, child: Text( "Done", style: customTextStyle.copyWith( color: Colors.black, fontSize: 20.sp, ), ), ), ), ), ], ), body: Column( children: [ Divider(color: lightGreyColor), Padding( padding: EdgeInsets.symmetric( horizontal: 20.w, vertical: 20.h, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Obx(() { return CustomDropdownField( borderColor: lightGreyColor, title: "Fitness Goals", items: controller.localFitnessGoalsList, selectedItem: controller.selectedFitnessGoal.isEmpty ? null : controller.selectedFitnessGoal.value, onChanged: (String? newValue) { if (newValue != null) { controller.selectedFitnessGoal.value = newValue; var selectedObj = controller.apiFitnessGoalsList .firstWhere( (element) => element.fitnessGoalTitle == newValue, ); controller.selectedFitnessGoalId.value = selectedObj.fitnessGoalId!; } }, ); }), SizedBox(height: 15.h), ], ), ), ], ), ), // Loader overlay - covers AppBar + Body if (isInitialLoading) Container( color: Colors.black.withValues(alpha: 0.4), child: const Center( child: CircularProgressIndicator( color: Colors.white, strokeWidth: 3, ), ), ), ], ); }); } }