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