import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:SEFER/constant/box_name.dart'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/profile/profile_controller.dart'; import 'package:SEFER/main.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:SEFER/views/widgets/my_scafold.dart'; import 'package:SEFER/views/widgets/my_textField.dart'; import 'package:SEFER/views/widgets/mycircular.dart'; import '../../../controller/functions/log_out.dart'; class PassengerProfilePage extends StatelessWidget { PassengerProfilePage({super.key}); LogOutController logOutController = Get.put(LogOutController()); @override Widget build(BuildContext context) { Get.put(ProfileController()); return MyScafolld( isleading: true, title: 'My Profile'.tr, body: [ GetBuilder( builder: (controller) => controller.isloading ? const MyCircularProgressIndicator() : Padding( padding: const EdgeInsets.symmetric(horizontal: 15), child: SizedBox( height: Get.height, child: SingleChildScrollView( child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Edit Profile'.tr, style: AppStyle.headTitle2, ), ListTile( title: Text( 'Name'.tr, style: AppStyle.title, ), leading: const Icon( Icons.person_pin_rounded, size: 35, ), trailing: const Icon(Icons.arrow_forward_ios), subtitle: Text( '${controller.prfoileData['first_name']} ${controller.prfoileData['last_name']}'), onTap: () { controller.updatField( 'first_name', TextInputType.name); }, ), ListTile( title: Text( 'Gender'.tr, style: AppStyle.title, ), leading: Image.asset( 'assets/images/gender.png', width: 35, ), trailing: const Icon(Icons.arrow_forward_ios), subtitle: Text( controller.prfoileData['gender'].toString()), onTap: () { Get.defaultDialog( title: 'Update Gender'.tr, content: Column( children: [ GenderPicker(), MyElevatedButton( title: 'Update'.tr, onPressed: () { controller.updateColumn({ 'id': controller.prfoileData['id'] .toString(), 'gender': controller.gender, }); Get.back(); }, ) ], )); // controller.updatField('gender'); }, ), ListTile( title: Text( 'Education'.tr, style: AppStyle.title, ), leading: Image.asset( 'assets/images/education.png', width: 35, ), trailing: const Icon(Icons.arrow_forward_ios), subtitle: Text(controller.prfoileData['education'] .toString()), onTap: () { Get.defaultDialog( barrierDismissible: true, title: 'Update Education'.tr, content: SizedBox( height: 200, child: Column( children: [ EducationDegreePicker(), ], ), ), confirm: MyElevatedButton( title: 'Update Education'.tr, onPressed: () { controller.updateColumn({ 'id': controller.prfoileData['id'] .toString(), 'education': controller.selectedDegree, }); Get.back(); }, )); }, ), ListTile( title: Text( 'Employment Type'.tr, style: AppStyle.title, ), leading: Image.asset( 'assets/images/employmentType.png', width: 35, ), trailing: const Icon(Icons.arrow_forward_ios), subtitle: Text(controller .prfoileData['employmentType'] .toString()), onTap: () { controller.updatField( 'employmentType', TextInputType.name); }, ), ListTile( title: Text( 'Marital Status'.tr, style: AppStyle.title, ), leading: Image.asset( 'assets/images/maritalStatus.png', width: 35, ), trailing: const Icon(Icons.arrow_forward_ios), subtitle: Text(controller .prfoileData['maritalStatus'] .toString()), onTap: () { controller.updatField( 'maritalStatus', TextInputType.name); }, ), ListTile( title: Text( 'SOS Phone'.tr, style: AppStyle.title, ), leading: const Icon( Icons.sos, color: AppColor.redColor, size: 35, ), trailing: const Icon(Icons.arrow_forward_ios), subtitle: Text(controller.prfoileData['sosPhone'] .toString()), onTap: () async { await controller.updatField( 'sosPhone', TextInputType.phone); box.write(BoxName.sosPhonePassenger, controller.prfoileData['sosPhone']); }, ), // const Spacer(), ], ), ), ), )), Positioned( left: 70, bottom: 100, right: 70, child: MyElevatedButton( title: 'Sign Out'.tr, onPressed: () { LogOutController().logOutPassenger(); }), ), Positioned( left: 70, bottom: 10, right: 70, child: GetBuilder(builder: (logOutController) { return MyElevatedButton( title: 'Delete My Account'.tr, onPressed: () { Get.defaultDialog( title: 'Are you sure to delete your account?'.tr, content: Form( key: logOutController.formKey1, child: MyTextForm( controller: logOutController.emailTextController, label: 'Type your Email'.tr, hint: 'Type your Email'.tr, type: TextInputType.emailAddress, ), ), confirm: MyElevatedButton( title: 'Delete My Account'.tr, kolor: AppColor.redColor, onPressed: () async { await logOutController.deletePassengerAccount(); }), cancel: MyElevatedButton( title: 'No I want'.tr, onPressed: () { logOutController.emailTextController.clear(); logOutController.update(); Get.back(); })); }); }), ) ], ); } } class GenderPicker extends StatelessWidget { final ProfileController controller = Get.put(ProfileController()); final List genderOptions = ['Male'.tr, 'Female'.tr, 'Other'.tr]; GenderPicker({super.key}); @override Widget build(BuildContext context) { return SizedBox( height: 100, child: CupertinoPicker( itemExtent: 32.0, onSelectedItemChanged: (int index) { controller.setGender(genderOptions[index]); }, children: genderOptions.map((String value) { return Text(value); }).toList(), ), ); } } class EducationDegreePicker extends StatelessWidget { final ProfileController controller = Get.put(ProfileController()); final List degreeOptions = [ 'High School Diploma'.tr, 'Associate Degree'.tr, 'Bachelor\'s Degree'.tr, 'Master\'s Degree'.tr, 'Doctoral Degree'.tr, ]; EducationDegreePicker({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return SizedBox( height: 200, child: CupertinoPicker( // backgroundColor: AppColor.accentColor, // looping: true, squeeze: 2, // diameterRatio: 5, itemExtent: 32, onSelectedItemChanged: (int index) { controller.setDegree(degreeOptions[index]); }, children: degreeOptions.map((String value) { return Text(value); }).toList(), ), ); } } class CountryPicker extends StatelessWidget { final ProfileController controller = Get.put(ProfileController()); final List countryOptions = [ 'Jordan'.tr, 'USA'.tr, 'Egypt'.tr, 'Turkey'.tr, 'Saudi Arabia'.tr, 'Qatar'.tr, 'Bahrain'.tr, 'Kuwait'.tr, ]; CountryPicker({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Column( children: [ SizedBox( height: 300, child: CupertinoPicker( itemExtent: 32, onSelectedItemChanged: (int index) { controller.setCountry(countryOptions[index]); }, children: List.generate( countryOptions.length, (index) => Center( child: Text( countryOptions[index], style: AppStyle.title, ), ), ), ), ), MyElevatedButton( title: controller.selectedCountry.toString(), onPressed: () { box.write( BoxName.countryCode, controller.selectedCountry.toString()); }) ], ); } }