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

128 lines
4.8 KiB
Dart

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,
),
),
),
],
);
});
}
}