import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:service/constant/colors.dart'; // Importa tu nuevo controlador de servicio import 'package:service/controller/mainController/ragister_service_controller.dart'; import 'package:service/views/widgets/elevated_btn.dart'; import 'package:service/views/widgets/my_scafold.dart'; // El import del antiguo controlador ya no es necesario // import '../registration_captain_controller.dart'; class RegisterCaptain extends StatelessWidget { const RegisterCaptain({super.key}); @override Widget build(BuildContext context) { // Instancia el NUEVO controlador final controller = Get.put(RegisterCaptainServiceController()); return MyScaffold( title: 'Syrian Documents Check'.tr, isleading: true, body: [ Obx(() { if (controller.isLoading.value) { return const Center(child: CircularProgressIndicator()); } return Column( children: [ Padding( padding: const EdgeInsets.symmetric(vertical: 16.0), child: StepIndicator( currentStep: controller.currentPageIndex.value, totalSteps: 4, ), ), Expanded( child: PageView( controller: controller.pageController, onPageChanged: (index) { controller.currentPageIndex.value = index; }, children: [ // <-- PÁGINAS REACTIVADAS CON EL NUEVO CONTROLADOR --> _buildSyrianDriverLicenseFront(context, controller), _buildSyrianDriverLicenseBack(context, controller), _buildSyrianCarLicenseFront(context, controller), _buildSyrianCarLicenseBack(controller), ], ), ), _buildNavigationControls(controller), ], ); }), ], ); } // Este método ya estaba usando el controlador correcto Widget _buildNavigationControls(RegisterCaptainServiceController controller) { bool isLastPage = controller.currentPageIndex.value == 3; bool isFirstPage = controller.currentPageIndex.value == 0; return Padding( padding: const EdgeInsets.all(16.0), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ if (!isFirstPage) MyElevatedButton( title: 'Back'.tr, onPressed: controller.previousPage, kolor: Colors.grey, ), if (isFirstPage) const Spacer(), MyElevatedButton( title: isLastPage ? 'Save and Activate'.tr : 'Next'.tr, onPressed: isLastPage ? controller.updateAndActivateSyrianDriver : controller.nextPage, kolor: isLastPage ? AppColor.greenColor : AppColor.primaryColor, ), ], ), ); } Widget _buildTextField({ required String label, required TextEditingController controller, IconData? icon, TextInputType keyboardType = TextInputType.text, VoidCallback? onTap, String? hintText, }) { return Padding( padding: const EdgeInsets.symmetric(vertical: 8.0), child: TextFormField( controller: controller, keyboardType: keyboardType, readOnly: onTap != null, onTap: onTap, decoration: InputDecoration( labelText: label.tr, hintText: hintText, prefixIcon: icon != null ? Icon(icon, color: AppColor.secondaryColor) : null, border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: const BorderSide(color: AppColor.secondaryColor, width: 2), ), ), ), ); } Widget _buildPageContent({ required RxString imageUrl, required List formFields, }) { return SingleChildScrollView( padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ // ClipRRect( // borderRadius: BorderRadius.circular(12), // child: Image.network( // imageUrl.value, // fit: BoxFit.fitWidth, // errorBuilder: (context, error, stackTrace) { // return Container( // height: 200, // color: Colors.grey[200], // child: Center( // child: Text( // 'Image not available'.tr, // style: const TextStyle(color: Colors.grey), // ), // ), // ); // }, // ), // ), // const SizedBox(height: 20), const Divider(), ...formFields, ], ), ); } // <-- MODIFICADO: Usa RegisterCaptainServiceController --> Widget _buildColorDropdown(RegisterCaptainServiceController controller) { return Padding( padding: const EdgeInsets.symmetric(vertical: 8.0), child: Obx( () => DropdownButtonFormField( value: controller.colorHex.value.isEmpty ? null : controller.colorHex.value, isExpanded: true, decoration: InputDecoration( labelText: 'Car Color'.tr, prefixIcon: Icon(Icons.color_lens, color: AppColor.secondaryColor), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), ), // <-- MODIFICADO: Usa la referencia estática del nuevo controlador --> items: RegisterCaptainServiceController.kCarColorOptions.map((opt) { final hex = opt['hex']!; final key = opt['key']!; return DropdownMenuItem( value: hex, child: Row( children: [ Container( width: 18, height: 18, decoration: BoxDecoration( color: controller.hexToColor(hex), shape: BoxShape.circle, border: Border.all(color: Colors.black12), ), ), const SizedBox(width: 12), Expanded(child: Text(key.tr)), ], ), ); }).toList(), onChanged: (hex) { if (hex != null) { controller.updateColorSelection(hex); } }, ), ), ); } // <-- MODIFICADO: Usa RegisterCaptainServiceController --> Widget _buildGenderDropdown(RegisterCaptainServiceController controller) { return Padding( padding: const EdgeInsets.symmetric(vertical: 8.0), child: Obx( () => DropdownButtonFormField( value: controller.selectedGender.value.isEmpty ? null : controller.selectedGender.value, isExpanded: true, decoration: InputDecoration( labelText: 'Gender'.tr, prefixIcon: Icon(Icons.wc, color: AppColor.secondaryColor), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), ), items: ['Male', 'Female'].map((String value) { return DropdownMenuItem( value: value, child: Text(value.tr), ); }).toList(), onChanged: (String? newValue) { if (newValue != null) { controller.selectedGender.value = newValue; } }, ), ), ); } // <-- MODIFICADO: Usa RegisterCaptainServiceController --> Widget _buildFuelDropdown(RegisterCaptainServiceController controller) { return Padding( padding: const EdgeInsets.symmetric(vertical: 8.0), child: Obx( () => DropdownButtonFormField( // <-- MODIFICADO: Usa la referencia estática del nuevo controlador --> value: RegisterCaptainServiceController.kFuelOptions .contains(controller.selectedFuel.value) ? controller.selectedFuel.value : null, isExpanded: true, decoration: InputDecoration( labelText: 'Fuel Type'.tr, prefixIcon: Icon(Icons.local_gas_station, color: AppColor.secondaryColor), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10), ), ), // <-- MODIFICADO: Usa la referencia estática del nuevo controlador --> items: RegisterCaptainServiceController.kFuelOptions.map((String value) { return DropdownMenuItem( value: value, child: Text(value.tr), ); }).toList(), onChanged: (String? newValue) { if (newValue != null) { controller.selectedFuel.value = newValue; } }, ), ), ); } // --- PAGE 1: Driver License Front --- // <-- MODIFICADO: Usa RegisterCaptainServiceController --> Widget _buildSyrianDriverLicenseFront( BuildContext context, RegisterCaptainServiceController controller) { return _buildPageContent( imageUrl: controller.docUrls['driver_license_front']!, formFields: [ Row( children: [ Expanded( child: _buildTextField( label: 'First Name', controller: controller.firstNameController, keyboardType: TextInputType.name), ), const SizedBox(width: 8), Expanded( child: _buildTextField( label: 'Last Name', controller: controller.lastNameController, keyboardType: TextInputType.name), ), ], ), _buildTextField( label: 'Phone Number', controller: controller.phoneController, hintText: 'e.g., 963992952235', icon: Icons.phone, keyboardType: TextInputType.phone, ), _buildTextField( label: 'Place of Registration', controller: controller.siteController, icon: Icons.location_city), Row( children: [ Expanded( child: _buildTextField( label: 'National Number', controller: controller.nationalNumberController, keyboardType: TextInputType.number, icon: Icons.fingerprint), ), const SizedBox(width: 8), Expanded(child: _buildGenderDropdown(controller)), ], ), _buildTextField( label: 'Birthdate', controller: controller.birthdateController, icon: Icons.cake, onTap: () => controller.selectDate(context, controller.birthdateController)), ], ); } // --- PAGE 2: Driver License Back --- // <-- MODIFICADO: Usa RegisterCaptainServiceController --> Widget _buildSyrianDriverLicenseBack( BuildContext context, RegisterCaptainServiceController controller) { return _buildPageContent( imageUrl: controller.docUrls['driver_license_back']!, formFields: [ _buildTextField( label: 'License Category', controller: controller.licenseCategoriesController), _buildTextField( label: 'Expiry Date', controller: controller.expiryDateController, icon: Icons.event_busy, onTap: () => controller.selectDate( context, controller.expiryDateController)), ], ); } // --- PAGE 3: Car License Front --- // <-- MODIFICADO: Usa RegisterCaptainServiceController --> Widget _buildSyrianCarLicenseFront( BuildContext context, RegisterCaptainServiceController controller) { return _buildPageContent( imageUrl: controller.docUrls['car_license_front']!, formFields: [ _buildTextField( label: 'Owner Name', controller: controller.ownerController, keyboardType: TextInputType.name, icon: Icons.person_search), Row( children: [ Expanded(child: _buildColorDropdown(controller)), const SizedBox(width: 8), Expanded( child: _buildTextField( label: 'Car Plate', controller: controller.carPlateController, ), ), ], ), // _buildTextField( // label: 'VIN', // controller: controller.vinController, // icon: Icons.confirmation_number), Row( children: [ Expanded( child: _buildTextField( label: 'License Issue Date', controller: controller.licenseIssueDateController, onTap: () => controller.selectDate( context, controller.licenseIssueDateController))), const SizedBox(width: 8), Expanded( child: _buildTextField( label: 'License Expiry Date', controller: controller.carLicenseExpiryDateController, onTap: () => controller.selectDate( context, controller.carLicenseExpiryDateController))), ], ), ], ); } // --- PAGE 4: Car License Back --- // <-- MODIFICADO: Usa RegisterCaptainServiceController --> Widget _buildSyrianCarLicenseBack( RegisterCaptainServiceController controller) { return _buildPageContent( imageUrl: controller.docUrls['car_license_back']!, formFields: [ Row( children: [ Expanded( child: _buildTextField( label: 'Make', controller: controller.makeController, )), const SizedBox(width: 8), Expanded( child: _buildTextField( label: 'Model', controller: controller.modelController, )), ], ), Row( children: [ Expanded( child: _buildTextField( label: 'Year', controller: controller.yearController, keyboardType: TextInputType.number)), const SizedBox(width: 8), Expanded(child: _buildFuelDropdown(controller)), ], ), ], ); } } class StepIndicator extends StatelessWidget { final int currentStep; final int totalSteps; const StepIndicator({ super.key, required this.currentStep, required this.totalSteps, }); @override Widget build(BuildContext context) { return Column( children: [ Text( '${'Step'.tr} ${currentStep + 1} ${'of'.tr} $totalSteps', style: const TextStyle( fontSize: 18, fontWeight: FontWeight.bold, color: Colors.black54), ), const SizedBox(height: 8), Row( mainAxisAlignment: MainAxisAlignment.center, children: List.generate(totalSteps, (index) { return Container( margin: const EdgeInsets.symmetric(horizontal: 4), width: 30, height: 8, decoration: BoxDecoration( color: index <= currentStep ? AppColor.primaryColor : Colors.grey.shade300, borderRadius: BorderRadius.circular(4), ), ); }), ), ], ); } }