import 'dart:io'; import 'package:wanisdriver/Provider/CarypeProvider.dart'; import 'package:wanisdriver/models/CarTypeModel.dart'; import 'package:wanisdriver/widgets/custom_button.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; import 'package:provider/provider.dart'; import '../Provider/SignUp_provider.dart'; import '../config/AppSnackbar.dart'; import '../config/enum/vehicle_type.dart'; import '../utils/colors.dart'; import '../widgets/CustomDateFieldWidget.dart'; import '../widgets/CustomDropdownWidget.dart'; import '../widgets/CustomTextFieldWidget.dart'; import '../widgets/SingleImagePickerWidget.dart'; import '../widgets/VehicleImagePickerWidget.dart'; import '../widgets/custom_text.dart'; import 'OtpVerificationScreen.dart'; class SignUpScreenCommercial extends StatefulWidget { const SignUpScreenCommercial({super.key}); @override State createState() => _SignUpScreenCommercialState(); } class _SignUpScreenCommercialState extends State { final ImagePicker _picker = ImagePicker(); final vehiculeYearController = TextEditingController(); final vehiculeModelController = TextEditingController(); final selectedVehicleType = TextEditingController(); late SignUpProvider provider ; Future _pickSingleImage({ required SignUpProvider provider, }) async { final ImagePicker picker = ImagePicker(); final XFile? pickedFile = await picker.pickImage(source: ImageSource.gallery); if (pickedFile != null) { final file = File(pickedFile.path); provider.setPatentFile(file); } } @override void initState() { super.initState(); provider = context.read(); WidgetsBinding.instance.addPostFrameCallback((_) { Provider.of(context, listen: false).loadCarType(); initTextController(); }); } void initTextController(){ vehiculeModelController.text = provider.vehicleModel ?? ''; vehiculeYearController.text = provider.vehicleYear ?? ''; selectedVehicleType.text = provider.vehicleType ?? ''; } @override Widget build(BuildContext context) { final carTypeProvider = Provider.of(context); return Scaffold( appBar: AppBar( title: const Txt( text: 'Taxi Commercial', style: TextStyle(), ), elevation: 0.5, ), body: SingleChildScrollView( padding: const EdgeInsets.all(20), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ CustomTextFieldWidget( controller: vehiculeModelController, label: 'Vehicle model', icon: Icons.directions_car, isPassword: false, isRequired: true, keybordType: TextInputType.text), const SizedBox(height: 32), CustomDropdownWidget( label: 'Select Vehicle Type', icon: Icons.directions_car, items:carTypeProvider.carType, selectedItem: selectedVehicleType.text, required:true, getItemLabel: (type) => type.type, onChanged: (value) { provider.setVehicleType(value!); setState(() { selectedVehicleType.text = value; }); }, ), const SizedBox(height: 32), CustomDateFieldWidget( controller: vehiculeYearController, label: 'Vehicle year', icon: Icons.date_range_outlined, required: true, dateFormat: "yyyy"), const SizedBox(height: 32), buildSectionTitle('Patent Photos'), const SizedBox(height: 16), SingleImagePicker( image: provider.patentFile, onImagePick: () => _pickSingleImage( provider: provider, ), title: 'Add Patent photo', subtitle: 'Upload a clear photo of your Patent', required: true, ), const SizedBox(height: 32), Center( child: CustomButton( borderRadius: 25, height: 55, isloading: provider.loader, loadercolor:Colors.white, onClick: () async { if (vehiculeModelController.text != ""||vehiculeModelController.text.trim() != null) { provider.setVehicleModel(vehiculeModelController.text.trim()); } else { AppSnackbar.showError("Error", "Please set a vehicle model."); return; } if (vehiculeYearController.text != "") { provider.setVehicleYear(vehiculeYearController.text.trim()); } else { AppSnackbar.showError("Error", "Please set a vehicle year."); return; } if (selectedVehicleType.text != ""||selectedVehicleType.text.trim() != null) { provider.setVehicleType(selectedVehicleType.text.trim()); } else { AppSnackbar.showError("Error", "Please set a vehicle year."); return; } if (provider.patentFile != null) { // provider.signUpDriver(); provider.phoneSignUp(); // Navigator.push(context, MaterialPageRoute(builder: (context)=>OtpVerificationScreen())); } else { AppSnackbar.showError("Error", "Please select a patent image."); return; } }, title: 'Submit', width: MediaQuery.of(context).size.width, backgroundColor: Theme.of(context).brightness == Brightness.dark ?AppColors.darkPrimaryColor:AppColors.primaryColor, ), ), ], ), ), ); } Widget buildSectionTitle(String title) => Text( title, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold), ); }