import 'package:awesome_dialog/awesome_dialog.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_expanded_tile/flutter_expanded_tile.dart'; import 'package:get/get.dart'; import 'package:intl/intl.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:shimmer/shimmer.dart'; import '../../Controller/Createorder/Createordercontroller.dart'; import '../../Controller/Dashboard/Drop/Tabs/Tenantcustomers/Tenantcustomercontroller.dart'; import '../../Controller/Dashboard/Pickup/Tabs/Tenantcustomers/Tenantcustomercontroller.dart'; import '../../Helper/Constants/Apiconstants.dart'; import '../../Helper/Constants/Assetconstants.dart'; import '../../Helper/Constants/Colorconstants.dart'; import '../../Helper/Logger.dart'; import '../../Helper/custombutton.dart'; import '../../Helper/toast.dart'; import '../../Helper/utility.dart'; import '../../Model/Response/Customers/GetCustomerById/GetCustomerByTenantId.dart'; import '../../Model/Response/Customers/GetCustomerById/Getdropcustomerbytenantid.dart'; import '../../Model/Response/Tenantlocation/Getlocationbyidresponse.dart'; import '../Googlemap/Googlemapview.dart'; import '../Home/Homeview.dart'; import 'Droplocation/Tabs/Dropcustomertabmainpage.dart'; import 'Pickuplocation/Googlemap/Googlemapview.dart'; import 'Pickuplocation/Tabs/Pickupcustomertabmainpage.dart'; class CreateOrderView extends StatelessWidget { final GetCustomerByTenantIdDetails? pickUpData; final GetDropCustomerByTenantIdDetails? dropData; final bool isDashboard; bool pickupSavedAddress; bool dropSavedAddress; CreateOrderView({super.key, required this.isDashboard, this.pickUpData,this.dropData,this.pickupSavedAddress = false,this.dropSavedAddress= false}); CreateOrderController createOrderController = Get.put(CreateOrderController()); TenantPickupCustomerController tenantPickupCustomerController = Get.put(TenantPickupCustomerController()); TenantDropCustomerController tenantDropCustomerController = Get.put(TenantDropCustomerController()); ScrollController listScrollController = ScrollController(); final ScrollController scrollController = ScrollController(); @override Widget build(BuildContext context) { return GetBuilder( initState: (_)async{ createOrderController.appConfigurationService.getAppConfig("${ApiConstants.configUrl}?configid=1"); createOrderController.loader = true; createOrderController.startTimer(); // createOrderController.getDetails(); createOrderController.getTenantLocation(); createOrderController.getLocation(); if(isDashboard == true) { createOrderController.getCurrentLocation(); } if(createOrderController.fromLatitude!= null&&createOrderController.fromLongitude!= null&&createOrderController.toLatitude!= null&&createOrderController.toLongitude != null){ SharedPreferences prefs = await SharedPreferences.getInstance(); var distanceInMeters = createOrderController.calculateDistance( double.parse(createOrderController.toLatitude.toString()), double.parse(createOrderController.toLongitude.toString()), double.parse(createOrderController.fromLatitude.toString()), double.parse(createOrderController.fromLongitude.toString()), ); createOrderController.distanceKm = distanceInMeters.round(); print('distanceKmIninit ${createOrderController.distanceKm}'); createOrderController.appRadius = prefs.getInt('appRadius')??0; logger.i(createOrderController.appRadius); if(createOrderController.appRadius != 0 &&createOrderController.distanceKm != null) { try { int appRadiusInt = int.parse(createOrderController.appRadius.toString()); int distanceKmInt = int.parse(createOrderController.distanceKm.toString()); if(appRadiusInt <= distanceKmInt) { AwesomeDialog( context: Get.context!, dialogType: DialogType.warning, //animType: AnimType.BOTTOMSLIDE, descTextStyle: const TextStyle(fontSize: 16,), desc: 'Service not available at this location.', dismissOnTouchOutside: false, btnOkText: 'Ok', // btnCancelOnPress: () { // Get.to(OrderDetails(data: data)); // }, btnOkOnPress: () async{ Get.to(()=>CreateOrderView(isDashboard: false,)); }, ).show(); } } catch (e) { print("Error parsing integers: $e"); } } else { print('appRadiusinit ${createOrderController.appRadius}'); print('distanceKminit ${createOrderController.distanceKm}'); print("One or both of the values are null."); } } createOrderController.getTenantInfo(); createOrderController.getTenantPricing(); // createOrderController.getTenantSubCategories(); createOrderController.getAdminToken(); createOrderController.pickupExpandedTileController = ExpandedTileController(isExpanded:createOrderController.pickupPredictions.isNotEmpty?false:true); createOrderController.dropExpandedTileController = ExpandedTileController(isExpanded:false); // createOrderController.listenLocationExpansion(); // deliveryDetailsController.customerEmail =data.email??''; }, builder: (controller) { return WillPopScope( onWillPop: () async{ Get.to(()=> HomeView(selectedIndex: 0)); return false; }, child: Scaffold( appBar: AppBar( backgroundColor: ColorConstants.primaryColor, elevation: 0.3, leading: Padding( padding: const EdgeInsets.all(5.0), child: InkWell( onTap: (){ Get.to(HomeView(selectedIndex: 0)); }, child: Icon(Icons.reply,size: 30,color: ColorConstants.secondaryColor,)), ), title: Text('Delivery',style: TextStyle(fontSize: 18,color: ColorConstants.secondaryColor,), ), actions: [ // Row( // mainAxisAlignment: MainAxisAlignment.center, // crossAxisAlignment: CrossAxisAlignment.center, // children: [ // Text( // '${DateFormat("dd-MM-yyyy").format(DateTime.now())}', // style: TextStyle(fontSize: 17,color: ColorConstants.secondaryColor,fontWeight: FontWeight.normal),), // SizedBox(width: 5,), // Text( // '${controller.currentTime.value.hour.toString().padLeft(2, '0')}:${controller.currentTime.value.minute.toString().padLeft(2, '0')}:${controller.currentTime.value.second.toString().padLeft(2, '0')} ${controller.amPm.value}', // // // '${DateFormat("hh.mm a").format(DateTime.now())}', // style: TextStyle(fontSize: 17,color: ColorConstants.secondaryColor,fontWeight: FontWeight.normal),), // ], // ), // Padding( // padding: const EdgeInsets.only(top: 5), // child: SizedBox( // width: Get.width*0.4, // child: DropdownButtonHideUnderline( // child: DropdownButtonFormField2( // isExpanded: true, // // style: TextStyle(color: ColorConstants.secondaryColor!), // decoration: InputDecoration( // // Add Horizontal padding using menuItemStyleData.padding so it matches // // the menu padding when button's width is not specified. // contentPadding: const EdgeInsets.only(bottom: 15), // // // fillColor:ColorConstants.secondaryColor , // // filled: true, // border: InputBorder.none // // Add more decoration.. // ), // hint: Text( // 'Select location', // style: TextStyle(fontSize: 14,color: ColorConstants.secondaryColor), // ), // // items: controller.tenantLocations // .map((item) => DropdownMenuItem( // value: item, // child: Row( // // children: [ // // Icon(Icons.business,color: ColorConstants.darkGreyColor), // // SizedBox(width: 5,), // Expanded( // child: Text( // "${item.locationname}", // maxLines: 2, // style: TextStyle( // fontSize: 14, // color: ColorConstants.darkGreyColor! // ), // ), // ), // ], // ), // )) // .toList(), // validator: (value) { // if (value == null) { // return 'Please select location.'; // } // return null; // }, // onChanged: (value) { // //Do something when selected item is changed. // }, // onSaved: (location) async{ // controller.selectedValue = location; // SharedPreferences prefs = await SharedPreferences.getInstance(); // controller.appLocationId = location?.applocationid??0; // controller.locationId = location?.locationid??0; // controller.tenantLocationName = location?.locationname??""; // prefs.setInt('partnerAppLocationId', location?.applocationid??0); // controller.update(); // }, // buttonStyleData: const ButtonStyleData( // padding: EdgeInsets.only(right: 8), // ), // iconStyleData: IconStyleData( // icon: Icon( // Icons.arrow_drop_down, // color: ColorConstants.secondaryColor, // ), // iconSize: 24, // ), // dropdownStyleData: DropdownStyleData( // decoration: BoxDecoration( // borderRadius: BorderRadius.circular(15), // ), // ), // menuItemStyleData: const MenuItemStyleData( // padding: EdgeInsets.symmetric(horizontal: 16), // ), // ), // ), // ), // ), Row( mainAxisAlignment: MainAxisAlignment.start, children: [ controller.tenantLocationName.isEmpty?Text('Select Location',style: TextStyle(fontSize: 16,color: ColorConstants.secondaryColor,)): Text('${controller.tenantLocationName}', maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle(fontSize: 16,color: ColorConstants.secondaryColor,), ), SizedBox(width: 0,), PopupMenuButton( position: PopupMenuPosition.under, icon: const Icon(Icons.reorder,size: 30,), onSelected: (TenantLocationDetails result) { // Handle menu item selection print('Selected: ${result.locationname}'); }, itemBuilder: (BuildContext context) { return controller.tenantLocations.map((TenantLocationDetails location) { return PopupMenuItem( value: location, child: ListTile( onTap: ()async{ SharedPreferences prefs = await SharedPreferences.getInstance(); controller.appLocationId = location.applocationid??0; controller.locationId = location.locationid??0; controller.tenantLocationName = location.locationname??''; prefs.setInt('partnerAppLocationId', location.applocationid??0); Navigator.pop(context); }, title: Text("${location.locationname}"), // subtitle: Text("${location.applocationid}"), ), ); }).toList(); }, ), ], ), SizedBox(width: 10,) ], titleSpacing: 0, ), backgroundColor: Colors.grey[100], body:ListView( controller: listScrollController, children: [ Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox(height: 10,), Padding( padding: const EdgeInsets.only(left: 10,right: 10) , child: Column( children: [ Column( children: [ Container( decoration: BoxDecoration(color:ColorConstants.secondaryColor), child:SizedBox( // height: 185, child: Container( decoration: BoxDecoration( color: ColorConstants.secondaryColor, shape: BoxShape.rectangle, border: Border(top:BorderSide(color: Colors.grey[600]!),left:BorderSide(color: Colors.grey[600]!),right: BorderSide(color: Colors.grey[600]!)), // borderRadius: BorderRadius.only(topLeft: Radius.circular(10),topRight:Radius.circular(10) ) ), child: Column( children: [ Padding( padding: const EdgeInsets.only(left: 6,top: 6), child: Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ InkWell( onTap:(){ if (controller.resultPosition != null) { Get.to(PickupGoogleMapView (lat: controller.resultPosition!.latitude, long: controller.resultPosition!.longitude)); } }, child: Row( children: [ Icon(Icons.location_on, color: ColorConstants.primaryColor,), const SizedBox( width: 6, ), Text( 'Pickup', style: TextStyle( color: ColorConstants.primaryColor, fontWeight: FontWeight.bold, fontSize: 16), ), ], )), Spacer(), // Icon(Icons.edit,color: ColorConstants.primaryColor,), InkWell( onTap:(){ Get.to(()=> PickupCustomerView()); }, child: Container( padding:const EdgeInsets.only(left: 5,right: 5,top: 5,bottom: 5), decoration: BoxDecoration(color: ColorConstants.secondaryColor,border: Border.all(color: Colors.grey[400]!),borderRadius: BorderRadius.circular(5)), child: Text( 'Saved address', style: TextStyle( color: ColorConstants.darkGreyColor, fontWeight: FontWeight.bold, fontSize: 15), ), ), ), const SizedBox( width: 6, ), ], ), ), // Padding( // padding: const EdgeInsets.only(left: 5,top: 5,bottom: 0,right: 5), // child: Column( // mainAxisAlignment: // MainAxisAlignment.center, // crossAxisAlignment: // CrossAxisAlignment.center, // children: [ // TextField( // controller: tenantPickupCustomerController.searchController, // textAlignVertical: TextAlignVertical.center, // // focusNode: controller.focusNode, // onChanged: (data){ // var keyword = data; // print('keyword................${keyword}'); // if(data.isEmpty){ // tenantPickupCustomerController.getCustomerBytenantId.clear(); // tenantPickupCustomerController.update(); // } // else { // // if(data.isNotEmpty) { // tenantPickupCustomerController.shimmer.value = true; // tenantPickupCustomerController.getSearchCustomerData(keyword); // } // // else{ // // tenantPickupCustomerController.shimmer.value = true; // // tenantPickupCustomerController.refreshData(); // // FocusScope.of(context).unfocus(); // // } // }, // decoration: InputDecoration( // border: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(2)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[300]!)), // enabledBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(2)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[300]!)), // focusedBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(2)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[300]!)), // disabledBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(2)), // borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), // prefixIcon: IconButton( // icon: const Icon(Icons.search), // color: Colors.grey[500]!, // onPressed: () { // // }, // ), // hintText: 'Search by contactno', // hintStyle: TextStyle( // color: Colors.grey[500]!, // // // ), // suffixIcon: tenantPickupCustomerController.searchController.text.isEmpty ? const SizedBox() : IconButton( // icon: const Icon(Icons.cancel), // color: Colors.grey[500]!, // onPressed: () { // tenantPickupCustomerController.searchController.clear(); // tenantPickupCustomerController.shimmer.value = true; // tenantPickupCustomerController.getCustomerBytenantId.clear(); // // tenantPickupCustomerController.refreshData(); // FocusManager.instance.primaryFocus?.unfocus(); // }, // ), // ), // ), // ], // ), // ), // tenantPickupCustomerController.getCustomerBytenantId.isNotEmpty // ? Container( // height: Get.height*0.20, // width: Get.width, // decoration: BoxDecoration(color: ColorConstants.secondaryColor,borderRadius: BorderRadius.circular(1)), // child: Obx(() { // return ListView.builder( // itemCount: tenantPickupCustomerController.getCustomerBytenantId.length, // itemBuilder: ( // BuildContext context, // int index) { // return Padding( // padding: const EdgeInsets // .only( // top: 5, // left: 5, // right: 5, // // ), // child: InkWell( // onTap: () async { // createOrderController.pickupCustomerId = tenantPickupCustomerController.getCustomerBytenantId[index].customerid; // createOrderController.pickUpCustomerName = "${tenantPickupCustomerController.getCustomerBytenantId[index].firstname}" + "${tenantPickupCustomerController.getCustomerBytenantId[index].lastname}"; // createOrderController.pickUpCustomerContactNo = tenantPickupCustomerController.getCustomerBytenantId[index].contactno; // createOrderController.pickUpLandMark = tenantPickupCustomerController.getCustomerBytenantId[index].landmark; // createOrderController.pickUpDoorNo = tenantPickupCustomerController.getCustomerBytenantId[index].doorno; // createOrderController.pickupLocationId = tenantPickupCustomerController.getCustomerBytenantId[index].deliverylocationid; // createOrderController.pickupTenantLocationId = tenantPickupCustomerController.getCustomerBytenantId[index].tenantlocationid; // createOrderController.fromLatitude = tenantPickupCustomerController.getCustomerBytenantId[index].latitude; // createOrderController.fromLongitude = tenantPickupCustomerController.getCustomerBytenantId[index].longitude; // createOrderController.fromAddress = tenantPickupCustomerController.getCustomerBytenantId[index].address; // createOrderController.pickupAddressController.text = tenantPickupCustomerController.getCustomerBytenantId[index].address ?? ''; // createOrderController.pickupContactNameController.text = "${tenantPickupCustomerController.getCustomerBytenantId[index].firstname}" + "${tenantPickupCustomerController.getCustomerBytenantId[index].lastname}"; // createOrderController.pickupContactNoController.text = tenantPickupCustomerController.getCustomerBytenantId[index].contactno ?? ''; // createOrderController.pickupDoorNoController.text = tenantPickupCustomerController.getCustomerBytenantId[index].doorno ?? ''; // createOrderController.pickupLandMarkController.text = tenantPickupCustomerController.getCustomerBytenantId[index].landmark ?? ''; // createOrderController.pickupStateController.text = tenantPickupCustomerController.getCustomerBytenantId[index].state ?? ''; // createOrderController.pickupCityController.text = tenantPickupCustomerController.getCustomerBytenantId[index].city ?? ''; // createOrderController.pickupSuburbController.text = tenantPickupCustomerController.getCustomerBytenantId[index].suburb ?? ''; // createOrderController.pickupPostcodeController.text = tenantPickupCustomerController.getCustomerBytenantId[index].postcode ?? ''; // // logger.i(createOrderController.pickupCustomerId); // logger.i(createOrderController.dropCustomerId); // // if (createOrderController.pickupCustomerId == createOrderController.dropCustomerId) { // Toast.showToast( // 'Please select different customer it already selected'); // } // else { // FocusManager.instance.primaryFocus?.unfocus(); // tenantPickupCustomerController.getCustomerBytenantId.clear(); // tenantPickupCustomerController.searchController.clear(); // tenantPickupCustomerController.update(); // print('ontapgetCustomerBytenantId ${tenantPickupCustomerController.getCustomerBytenantId}'); // // // Get.to(CreateOrderView(pickUpData:tenantPickupCustomerController.getCustomerBytenantId[index], isDashboard: false,pickupSavedAddress: true,)); // // } // }, // child: Stack( // children: [ // Container( // padding: const EdgeInsets.only(right: 5,top: 10,left: 5,bottom: 10), // margin: const EdgeInsets.only(top: 2,bottom: 2), // decoration: BoxDecoration( // color: ColorConstants.secondaryColor, // border:Border.all(color: ColorConstants.darkGreyColor!), // borderRadius: const BorderRadius.all(Radius.circular(3)), // ), // child: Row( // mainAxisAlignment: MainAxisAlignment.center, // crossAxisAlignment: CrossAxisAlignment.center, // children: [ // // Expanded( // flex: 8, // child: Column( // crossAxisAlignment: CrossAxisAlignment.center, // mainAxisAlignment: MainAxisAlignment.center, // children: [ // Row( // children: [ // Icon( // Icons.person, // color: ColorConstants.primaryColor, // size: 20, // ), // const SizedBox( // width: 5, // ), // Row( // children: [ // Text( // tenantPickupCustomerController.getCustomerBytenantId[index].firstname ?? "", // style: TextStyle( // fontSize: 16, // color: Colors.grey[600], // fontWeight: FontWeight.w300), // ), // ], // ), // Spacer(), // Icon( // Icons.call, // color: ColorConstants.primaryColor, // size: 20, // ), // const SizedBox( // width: 5, // ), // Text( // '${tenantPickupCustomerController.getCustomerBytenantId[index].contactno}', // style: TextStyle( // color: ColorConstants.darkGreyColor, // fontSize: 14, // fontWeight: // FontWeight.w300), // ), // // ], // ), // // ], // )), // ], // ), // ), // // ], // ), // ), // ); // } // ); // }) // ):SizedBox(), Padding( padding: const EdgeInsets.only(left: 5,top: 5,bottom: 0,right: 5), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ TextField( onTap: () async { }, onChanged: (text)async { if(text.isEmpty){ controller.pickupPredictions.clear(); FocusManager.instance.primaryFocus?.unfocus(); controller.update(); } else { controller.onSearchPickupTextChanged(text); } }, controller: controller.pickupAddressController, maxLines: 2, cursorColor: ColorConstants.textFieldColor, style: TextStyle( color: ColorConstants.textFieldColor, fontSize: 14, ), decoration: InputDecoration( fillColor: Colors.white, filled: true, // prefixIcon:Icon( Icons.location_on,color: ColorConstants.primaryColor,) , suffixIcon: InkWell( onTap: (){ controller.pickupAddressController.clear(); controller.pickupSuburbController.clear(); controller.pickupCityController.clear(); controller.pickupStateController.clear(); controller.pickupPostcodeController.clear(); controller.pickupSaveAddress = false; // controller.pickupContactNameController.clear(); // controller.pickupContactNoController.clear(); // controller.pickupDoorNoController.clear(); // controller.pickupLandMarkController.clear(); controller.pickupPredictions.clear(); FocusManager.instance.primaryFocus?.unfocus(); // pickupSavedAddress = false; controller.pickupExpandedTileController.collapse(); controller.update(); print('isExpandedTextfield'); }, child: Icon(Icons.close,color: Colors.red,)), border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(2)), borderSide: BorderSide( width: 1.5, color: Colors.grey[300]!)), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(2)), borderSide: BorderSide( width: 1.5, color: Colors.grey[300]!)), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(2)), borderSide: BorderSide( width: 1.5, color: Colors.grey[300]!)), disabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(2)), borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), counterText: "", hintText: "Pickup address"), ), ], ), ), SizedBox(height: 5,) ], ), ), ), ), Container( decoration: BoxDecoration( color: ColorConstants.secondaryColor, shape: BoxShape.rectangle, border: Border(right:BorderSide(color: Colors.grey[600]!),left:BorderSide(color: Colors.grey[600]!),bottom: BorderSide(color: Colors.grey[600]!),top:BorderSide(color: Colors.grey[300]!)), // borderRadius: BorderRadius.only(topLeft: Radius.circular(10),topRight:Radius.circular(10) ) ), child: ExpandedTile( theme: ExpandedTileThemeData( // headerRadius: 24.0, headerPadding: EdgeInsets.only(left: 5,right: 5,top: 5,bottom: 5), headerColor: ColorConstants.secondaryColor, contentBackgroundColor: ColorConstants.secondaryColor, contentPadding: EdgeInsets.only(left: 5,right: 5,top: 5,bottom: 5), ), controller: controller.pickupExpandedTileController, title: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ createOrderController.pickupPredictions.isNotEmpty?Container( height: Get.height*0.20, width: Get.width, decoration: BoxDecoration(color: ColorConstants.secondaryColor,borderRadius: BorderRadius.circular(1)), child: Obx(() { return ListView.builder( itemCount: createOrderController.pickupPredictions.length, itemBuilder: (context, index) { final prediction = createOrderController.pickupPredictions[index]['description']; return ListTile( title: Text(prediction,style: TextStyle(color: ColorConstants.darkGreyColor),), onTap: () { final placeId = createOrderController.pickupPredictions[index]['place_id']; createOrderController.getPickupPlaceDetails(placeId,prediction); controller.pickupExpandedTileController.expand(); FocusManager.instance.primaryFocus?.unfocus(); }, ); }, ); }),):SizedBox(), createOrderController.pickupPredictions.isNotEmpty?SizedBox():Text('Pickup details :',style: TextStyle(color: ColorConstants.darkGreyColor,fontSize: 14,fontWeight: FontWeight.bold),), ], ), content: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 0,), Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox(width:5), Container( height: Get.height * 0.07, width: Get.width * 0.45, child: TextField( textCapitalization: TextCapitalization.sentences, inputFormatters: [ UpperCaseTextFormatter() ], onTap: () async { }, onChanged: (name){ print('pickupCustomerName $name'); createOrderController.pickUpCustomerName = name; }, controller: createOrderController.pickupContactNameController, // maxLines: 1, cursorColor: ColorConstants.textFieldColor, style: TextStyle( color: ColorConstants.textFieldColor, fontSize: 14, ), maxLength: 25, decoration: InputDecoration( fillColor: Colors.white, filled: true, prefixIcon:Icon( Icons.person,color: ColorConstants.darkGreyColor,) , border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), disabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), counterText: "", hintText: "Contact name"), ), ), SizedBox(width: 3,), Container( height: Get.height * 0.07, width: Get.width * 0.45, child: // IntlPhoneField( // focusNode: controller.pickupFocusNode, // flagsButtonPadding: EdgeInsets.only(left: 5), // invalidNumberMessage: "Invalid number", // textAlignVertical: TextAlignVertical.center, // cursorHeight: 10, // showDropdownIcon: false, // // autovalidateMode: AutovalidateMode.always, // decoration: InputDecoration( // fillColor: Colors.white, // filled: true, // labelText: '', // hintText: "Contact no", // counterText: "", // contentPadding: EdgeInsets.only(top: 10), // border: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(1)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[100]!)), // enabledBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(1)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[100]!)), // focusedBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(1)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[100]!)), // disabledBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(1)), // borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), // ), // initialCountryCode: 'IN', // showCountryFlag: false, // countries: [], // controller: createOrderController.pickupContactNoController, // keyboardType: TextInputType.number, // // maxLines: 1, // cursorColor: ColorConstants.textFieldColor, // style: TextStyle( // color: ColorConstants.textFieldColor, // fontSize: 14, // ), // onChanged: (contactNo){ // createOrderController.pickUpCustomerContactNo = contactNo.completeNumber; // // // if(controller.pickupContactNoController.text.length ==10){ // FocusScope.of(context).unfocus(); // } // }, // ), // InternationalPhoneNumberInput( // // Callback for when the input changes // onInputChanged: (PhoneNumber contactNo) { // createOrderController.pickUpCustomerContactNo = contactNo.phoneNumber; // // if(contactNo.phoneNumber?.length==10){ // FocusScope.of(context).unfocus(); // } // }, // // Callback for when the input is validated // onInputValidated: (bool value) { // // You can perform additional validation here if needed // }, // // Configuration for the country selector // textAlignVertical: TextAlignVertical.center, // // Ignore blank input // ignoreBlank: false, // countrySelectorScrollControlled: false, // spaceBetweenSelectorAndTextField: 5, // // // // Auto-validation mode // autoValidateMode: AutovalidateMode.onUserInteraction, // // Style for the country selector // selectorTextStyle: TextStyle(color: Colors.black), // keyboardType: TextInputType.number, // // maxLines: 1, // cursorColor: ColorConstants.textFieldColor, // // // Initial value for the phone number input // initialValue:controller.number, // // Controller for the text field // textFieldController: createOrderController.pickupContactNoController, // // Decoration for the input field // inputDecoration: InputDecoration( // fillColor: Colors.white, // filled: true, // border: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(1)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[100]!)), // enabledBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(1)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[100]!)), // focusedBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(1)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[100]!)), // disabledBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(1)), // borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), // counterText: "", // hintText: "Contact no" // ), // // Format input (e.g., adding spaces between digits) // formatInput: false, // ), TextField( onChanged: (contactNo){ createOrderController.pickUpCustomerContactNo = contactNo; createOrderController.pickUpCustomerContactNoCheck = createOrderController.pickUpCustomerContactNo; if(createOrderController.pickUpCustomerContactNoCheck == createOrderController.pickUpCustomerContactNo){ controller.pickupSaveAddress = true; if(contactNo.length==10){ FocusManager.instance.primaryFocus?.unfocus(); } } // else if(contactNo.length==10){ // FocusManager.instance.primaryFocus?.unfocus(); // } }, controller: createOrderController.pickupContactNoController, keyboardType: TextInputType.number, // maxLines: 1, cursorColor: ColorConstants.textFieldColor, style: TextStyle( color: ColorConstants.textFieldColor, fontSize: 14, ), maxLength: 10, decoration: InputDecoration( fillColor: Colors.white, filled: true, prefixIcon:Icon( Icons.phone,color: ColorConstants.darkGreyColor,) , border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), disabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), counterText: "", hintText: "Contact no"), ), ), ], ), const SizedBox(height: 5,), Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox(width:5), Container( height: Get.height * 0.07, width: Get.width * 0.45, child: TextField( onTap: () async { }, onChanged: (doorno){ print('pickUpDoorNo $doorno'); createOrderController.pickUpDoorNo = doorno; }, maxLength: 25, controller: createOrderController.pickupDoorNoController, // maxLines: 1, cursorColor: ColorConstants.textFieldColor, style: TextStyle( color: ColorConstants.textFieldColor, fontSize: 14, ), decoration: InputDecoration( fillColor: Colors.white, filled: true, prefixIcon:Icon( Icons.door_back_door_outlined,color: ColorConstants.darkGreyColor,) , border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), disabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), counterText: "", hintText: "House / Door no"), ), ), SizedBox(width: 3,), Container( height: Get.height * 0.07, width: Get.width * 0.45, child: TextField( onTap: () async { }, onChanged: (landmark){ print('pickUpLandMark $landmark'); createOrderController.pickUpLandMark = landmark; }, controller: createOrderController.pickupLandMarkController, maxLength: 25, // maxLines: 1, cursorColor: ColorConstants.textFieldColor, style: TextStyle( color: ColorConstants.textFieldColor, fontSize: 14, ), decoration: InputDecoration( fillColor: Colors.white, filled: true, prefixIcon:Icon( Icons.house,color: ColorConstants.darkGreyColor,) , border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), disabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), counterText: "", hintText: "Landmark"), ), ), ], ), const SizedBox(height: 10,), Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.end, children: [ SizedBox(width:5), !controller.pickupSaveAddress?Container():InkWell( onTap:(){ if( controller.pickupAddressController.text.isEmpty){ Toast.showToast('Pickup address should not be empty'); } else if( controller.pickupContactNameController.text.isEmpty){ Toast.showToast('Pickup customer name should not be empty'); } else if( controller.pickupContactNoController.text.isEmpty){ Toast.showToast('Pickup customer no should not be empty'); } else if( controller.pickupContactNoController.text.length!=10){ Toast.showToast('Please enter correct pickup customer no'); } // else if( controller.pickupContactNameController.text.length!=3 ){ // Toast.showToast('Pickup customer name should be minimum 3 characters required'); // } else { // controller.pickupSaveAddress = true; // controller.pickupCustomerId = 0; } }, child: !controller.pickupSaveAddress?Container():Row( children: [ InkWell( onTap: (){ pickupSave(); }, child: Container(height: 21,width: 22, decoration: BoxDecoration(borderRadius: BorderRadius.circular(3),color: controller.pikUpSaveChecking==true?Colors.green:Colors.white,border: Border.all( color: controller.pikUpSaveChecking?Colors.green:Colors.grey[400]! ) ), child:controller.pikUpSaveChecking ==true?const Icon(Icons.check,color: Colors.white,size: 19,):const SizedBox(), ), ), SizedBox(width: 10,), Text('Save for later',style: TextStyle(color:ColorConstants.primaryColor),), ], ), ), Spacer(), InkWell( onTap:(){ controller.pickupExpandedTileController.collapse(); }, child: Container( padding: const EdgeInsets.only(left: 20,bottom: 7,top: 7,right:20), decoration: BoxDecoration(color:ColorConstants.primaryColor,borderRadius: BorderRadius.circular(5)), child: Text('Ok',style: TextStyle(color:ColorConstants.secondaryColor),), ), ), SizedBox(width:5) ], ), const SizedBox(height: 5,), ], ), onTap: () { debugPrint("tapped!!"); }, onLongTap: () { debugPrint("long tapped!!"); }, ), ), ], ), ], ), ), SizedBox(height: 10,), Padding( padding: const EdgeInsets.only(left: 8,right: 8) , child: Column( children: [ Column( children: [ Container( decoration: BoxDecoration(color:ColorConstants.secondaryColor), child:SizedBox( // height: 120, child: Container( decoration: BoxDecoration( color: ColorConstants.secondaryColor, shape: BoxShape.rectangle, border: Border(top:BorderSide(color: Colors.green[300]!),left:BorderSide(color: Colors.green[300]!),right: BorderSide(color: Colors.green[300]!)), // borderRadius: BorderRadius.only(topLeft: Radius.circular(10),topRight:Radius.circular(10) ) ), child: Column( children: [ Padding( padding: const EdgeInsets.only(left: 6,top: 6), child: Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ InkWell( onTap:()async{ if (controller.resultPosition != null) { Get.to(DropGoogleMapView (lat: controller.resultPosition!.latitude, long: controller.resultPosition!.longitude)); } }, child: Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ Icon(Icons.location_on, color: ColorConstants.primaryColor,), const SizedBox( width: 6, ), Text( 'Drop', style: TextStyle( color: ColorConstants.primaryColor, fontWeight: FontWeight.bold, fontSize: 16), ), ], ), ), Spacer(), // Icon(Icons.edit,color: ColorConstants.primaryColor,), InkWell( onTap:(){ Get.to(()=> DropCustomerView()); }, child: Container( padding:const EdgeInsets.only(left: 5,right: 5,top: 5,bottom: 5), decoration: BoxDecoration(color: ColorConstants.secondaryColor,border: Border.all(color: Colors.grey[400]!),borderRadius: BorderRadius.circular(5)), child: Text( 'Saved address', style: TextStyle( color: ColorConstants.darkGreyColor, fontWeight: FontWeight.bold, fontSize: 15), ), ), ), const SizedBox( width: 6, ), ], ), ), // Padding( // padding: const EdgeInsets.only(left: 5,top: 5,bottom: 0,right: 5), // child: Column( // mainAxisAlignment: // MainAxisAlignment.center, // crossAxisAlignment: // CrossAxisAlignment.center, // children: [ // TextField( // controller: tenantDropCustomerController.searchController, // textAlignVertical: TextAlignVertical.center, // // focusNode: controller.focusNode, // onChanged: (data){ // var keyword = data; // print('keyword................${keyword}'); // if(data.isEmpty){ // tenantDropCustomerController.getCustomerBytenantId.clear(); // tenantDropCustomerController.update(); // } // else { // // if(data.isNotEmpty) { // tenantDropCustomerController.shimmer.value = true; // tenantDropCustomerController.getSearchCustomerData(keyword); // // } // // else{ // // tenantDropCustomerController.shimmer.value = true; // // tenantDropCustomerController.refreshData(); // // FocusScope.of(context).unfocus(); // // } // // }, // onTap:(){ // if (listScrollController.hasClients) { // final position = // listScrollController.position.minScrollExtent + // 300; // listScrollController.animateTo( // position, // duration: const Duration(seconds: 1), // curve: Curves.easeOut, // ); // } // }, // decoration: InputDecoration( // border: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(2)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[300]!)), // enabledBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(2)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[300]!)), // focusedBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(2)), // borderSide: BorderSide( // width: 1.5, // color: Colors.grey[300]!)), // disabledBorder: OutlineInputBorder( // borderRadius: BorderRadius.all(Radius.circular(2)), // borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), // prefixIcon: IconButton( // icon: const Icon(Icons.search), // color: Colors.grey[500]!, // onPressed: () { // // }, // ), // hintText: 'Search by contactno', // hintStyle: TextStyle( // color: Colors.grey[500]!, // // // ), // suffixIcon: tenantDropCustomerController.searchController.text.isEmpty ? const SizedBox() : IconButton( // icon: const Icon(Icons.cancel), // color: Colors.grey[500]!, // onPressed: () { // tenantDropCustomerController.searchController.clear(); // tenantDropCustomerController.shimmer.value = true; // tenantDropCustomerController.getCustomerBytenantId.clear(); // // tenantPickupCustomerController.refreshData(); // FocusManager.instance.primaryFocus?.unfocus(); // }, // ), // ), // ), // ], // ), // ), // tenantDropCustomerController.getCustomerBytenantId.isNotEmpty // ? Container( // height: Get.height*0.20, // width: Get.width, // decoration: BoxDecoration(color: ColorConstants.secondaryColor,borderRadius: BorderRadius.circular(1)), // child: Obx(() { // return ListView.builder( // itemCount: tenantDropCustomerController.getCustomerBytenantId.length, // itemBuilder: ( // BuildContext context, // int index) { // return Padding( // padding: const EdgeInsets.only(top: 5, left: 5, right: 5,), // child: InkWell( // onTap: () async { // createOrderController.dropCustomerId = tenantDropCustomerController.getCustomerBytenantId[index].customerid; // createOrderController.dropCustomerName = "${tenantDropCustomerController.getCustomerBytenantId[index].firstname}" + "${tenantDropCustomerController.getCustomerBytenantId[index].lastname}"; // createOrderController.dropCustomerContactNo = tenantDropCustomerController.getCustomerBytenantId[index].contactno; // createOrderController.dropLandMark = tenantDropCustomerController.getCustomerBytenantId[index].landmark; // createOrderController.dropDoorNo = tenantDropCustomerController.getCustomerBytenantId[index].doorno; // createOrderController.dropLocationId = tenantDropCustomerController.getCustomerBytenantId[index].deliverylocationid; // createOrderController.dropTenantLocationId = tenantDropCustomerController.getCustomerBytenantId[index].tenantlocationid; // createOrderController.toLatitude = tenantDropCustomerController.getCustomerBytenantId[index].latitude; // createOrderController.toLongitude = tenantDropCustomerController.getCustomerBytenantId[index].longitude; // createOrderController.toAddress =tenantDropCustomerController.getCustomerBytenantId[index].address; // // createOrderController.dropAddressController.text = tenantDropCustomerController.getCustomerBytenantId[index].address??''; // createOrderController.dropContactNameController.text = "${tenantDropCustomerController.getCustomerBytenantId[index].firstname}" + "${tenantDropCustomerController.getCustomerBytenantId[index].lastname}"; // createOrderController.dropContactNoController.text = tenantDropCustomerController.getCustomerBytenantId[index].contactno??''; // createOrderController.dropDoorNoController.text = tenantDropCustomerController.getCustomerBytenantId[index].doorno??''; // createOrderController.dropLandMarkController.text = tenantDropCustomerController.getCustomerBytenantId[index].landmark??''; // createOrderController.dropStateController.text = tenantDropCustomerController.getCustomerBytenantId[index].state ??''; // createOrderController.dropCityController.text = tenantDropCustomerController.getCustomerBytenantId[index].city??'' ; // createOrderController.dropSuburbController.text = tenantDropCustomerController.getCustomerBytenantId[index].suburb??''; // createOrderController.dropPostcodeController.text = tenantDropCustomerController.getCustomerBytenantId[index].postcode??'' ; // // logger.i (createOrderController.pickupCustomerId); // logger.i (createOrderController.dropCustomerId); // // if(createOrderController.dropCustomerId == createOrderController.pickupCustomerId){ // Toast.showToast('Please select different customer it already selected'); // } // // else { // FocusManager.instance.primaryFocus?.unfocus(); // // tenantDropCustomerController.getCustomerBytenantId.clear(); // tenantDropCustomerController.searchController.clear(); // tenantDropCustomerController.update(); // print('ontapgetCustomerBytenantId ${tenantDropCustomerController.getCustomerBytenantId}'); // // // Get.to(CreateOrderView(dropData:tenantPickupCustomerController.getCustomerBytenantId[index], isDashboard: false,pickupSavedAddress: true,)); // // } // }, // child: Stack( // children: [ // Container( // padding: const EdgeInsets.only(right: 5,top: 10,left: 5,bottom: 10), // margin: const EdgeInsets.only(top: 2,bottom: 2), // decoration: BoxDecoration( // color: ColorConstants.secondaryColor, // border:Border.all(color: ColorConstants.darkGreyColor!), // borderRadius: const BorderRadius.all(Radius.circular(3)), // ), // // height: Get.height * 0.15, // child: Row( // mainAxisAlignment: MainAxisAlignment.start, // crossAxisAlignment: CrossAxisAlignment.center, // children: [ // Expanded( // flex: 8, // child: Column( // crossAxisAlignment: // CrossAxisAlignment.start, // mainAxisAlignment: // MainAxisAlignment.spaceEvenly, // children: [ // Row( // children: [ // Icon( // Icons.person, // color: ColorConstants.primaryColor, // size: 20, // ), // const SizedBox( // width: 5, // ), // Row( // children: [ // Text( // tenantDropCustomerController.getCustomerBytenantId[index].firstname ?? "", // style: TextStyle( // fontSize: 16, // color: Colors // .grey[600], // fontWeight: // FontWeight // .w600), // ), // ], // ), // Spacer(), // Icon( // Icons.call, // color: ColorConstants.primaryColor, // size: 20, // ), // const SizedBox( // width: 5, // ), // Text( // '${tenantDropCustomerController.getCustomerBytenantId[index].contactno}', // style: TextStyle( // color: ColorConstants.darkGreyColor, // fontSize: 14, // fontWeight: // FontWeight // .bold), // ), // ], // ), // // ], // )), // ], // ), // ), // // ], // ), // ), // ); // } // ); // }) // ):SizedBox(), Padding( padding: const EdgeInsets.only(left: 5,top: 5,bottom: 0,right: 5), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ TextField( onTap: () async { if (listScrollController.hasClients) { final position = listScrollController.position.minScrollExtent + 300; listScrollController.animateTo( position, duration: const Duration(seconds: 1), curve: Curves.easeOut, ); } }, onChanged: (text) { if(text.isEmpty){ controller.dropPredictions.clear(); FocusManager.instance.primaryFocus?.unfocus(); controller.update(); } else { controller .onSearchDropTextChanged( text); } }, controller: controller.dropAddressController, maxLines: 2, cursorColor: ColorConstants.textFieldColor, style: TextStyle( color: ColorConstants.textFieldColor, fontSize: 14, ), decoration: InputDecoration( fillColor: Colors.white, filled: true, // prefixIcon:Icon( Icons.location_on,color: ColorConstants.primaryColor,) , suffixIcon: InkWell( onTap: (){ controller.dropAddressController.clear(); controller.dropSuburbController.clear(); controller.dropCityController.clear(); controller.dropStateController.clear(); controller.dropPostcodeController.clear(); controller.dropSaveAddress = false; // controller.dropContactNameController.clear(); // controller.dropContactNoController.clear(); // controller.dropDoorNoController.clear(); // controller.dropLandMarkController.clear(); controller.dropPredictions.clear(); FocusManager.instance.primaryFocus?.unfocus(); // dropSavedAddress = false; controller.dropExpandedTileController.collapse(); controller.update(); print('isDropExpandedTextfield'); }, child: Icon(Icons.close,color: Colors.red,)), border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(2)), borderSide: BorderSide( width: 1.5, color: Colors.grey[300]!)), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(2)), borderSide: BorderSide( width: 1.5, color: Colors.grey[300]!)), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(2)), borderSide: BorderSide( width: 1.5, color: Colors.grey[300]!)), disabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(2)), borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), counterText: "", hintText: "Drop address"), ), ], ), ), SizedBox(height: 5,) ], ), ), ), ), Container( decoration: BoxDecoration( color: ColorConstants.secondaryColor, shape: BoxShape.rectangle, border: Border(right:BorderSide(color: Colors.green[300]!),left:BorderSide(color: Colors.green[300]!),bottom: BorderSide(color: Colors.green[300]!),top:BorderSide(color: Colors.green[300]!)), // borderRadius: BorderRadius.only(topLeft: Radius.circular(10),topRight:Radius.circular(10) ) ), child: ExpandedTile( theme: ExpandedTileThemeData( // headerRadius: 24.0, headerPadding: EdgeInsets.only(left: 5,right: 5,top: 5,bottom: 5), headerColor: ColorConstants.secondaryColor, contentBackgroundColor: ColorConstants.secondaryColor, contentPadding: EdgeInsets.only(left: 5,right: 5,top: 5,bottom: 5), ), controller: controller.dropExpandedTileController, title: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ createOrderController.dropPredictions.isNotEmpty?Container( height: Get.height*0.20, width: Get.width, decoration: BoxDecoration(color: ColorConstants.secondaryColor,borderRadius: BorderRadius.circular(1)), child: Obx(() { return ListView.builder( itemCount: createOrderController.dropPredictions.length, itemBuilder: (context, index) { final prediction = createOrderController.dropPredictions[index]['description']; return ListTile( title: Text(prediction,style: TextStyle(color: ColorConstants.darkGreyColor),), onTap: () { final placeId = createOrderController.dropPredictions[index]['place_id']; createOrderController.getDropPlaceDetails(placeId,prediction); controller.dropExpandedTileController.expand(); FocusManager.instance.primaryFocus?.unfocus(); }, ); }, ); }),):SizedBox(), createOrderController.dropPredictions.isNotEmpty?SizedBox():Text('Drop details :',style: TextStyle(color: ColorConstants.darkGreyColor,fontSize: 14,fontWeight: FontWeight.bold),), ], ), content: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 0,), Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox(width:5), Container( height: Get.height * 0.07, width: Get.width * 0.45, child: TextField( textCapitalization: TextCapitalization.sentences, inputFormatters: [ UpperCaseTextFormatter() ], onTap: () async { }, onChanged: (name){ print('dropCustomerName $name'); createOrderController.dropCustomerName = name; print('dropContactNameControllerlength ${createOrderController.dropContactNameController.text.length}'); }, controller: createOrderController.dropContactNameController, // maxLines: 1, cursorColor: ColorConstants.textFieldColor, style: TextStyle( color: ColorConstants.textFieldColor, fontSize: 14, ), maxLength: 25, decoration: InputDecoration( fillColor: Colors.white, filled: true, prefixIcon:Icon( Icons.person,color: ColorConstants.darkGreyColor,) , border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), disabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), counterText: "", hintText: "Contact name"), ), ), SizedBox(width: 3,), Container( height: Get.height * 0.07, width: Get.width * 0.45, child: TextField( onChanged: (contactNo){ createOrderController.dropCustomerContactNo = contactNo; createOrderController.dropCustomerContactNo = contactNo; createOrderController.dropCustomerContactNoCheck = createOrderController.dropCustomerContactNo; if(createOrderController.dropCustomerContactNoCheck == createOrderController.dropCustomerContactNo){ controller.dropSaveAddress = true; if(contactNo.length==10){ FocusManager.instance.primaryFocus?.unfocus(); } } // else if(contactNo.length==10){ // FocusManager.instance.primaryFocus?.unfocus(); // } }, keyboardType: TextInputType.number, controller: createOrderController.dropContactNoController, // maxLines: 1, cursorColor: ColorConstants.textFieldColor, style: TextStyle( color: ColorConstants.textFieldColor, fontSize: 14, ), maxLength: 10, decoration: InputDecoration( fillColor: Colors.white, filled: true, prefixIcon:Icon( Icons.phone,color: ColorConstants.darkGreyColor,) , border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), disabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), counterText: "", hintText: "Contact no"), ), ), ], ), const SizedBox(height: 5,), Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox(width:5), Container( height: Get.height * 0.07, width: Get.width * 0.45, child: TextField( onTap: () async { }, maxLength: 25, onChanged: (doorno){ print('dropDoorNo $doorno'); createOrderController.dropDoorNo = doorno; }, controller: createOrderController.dropDoorNoController, // maxLines: 1, cursorColor: ColorConstants.textFieldColor, style: TextStyle( color: ColorConstants.textFieldColor, fontSize: 14, ), decoration: InputDecoration( fillColor: Colors.white, filled: true, prefixIcon:Icon( Icons.door_back_door_outlined,color: ColorConstants.darkGreyColor,) , border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), disabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), counterText: "", hintText: "House / Door no"), ), ), SizedBox(width: 3,), Container( height: Get.height * 0.07, width: Get.width * 0.45, child: TextField( onTap: () async { }, maxLength: 25, onChanged: (landmark){ print('dropLandMark $landmark'); createOrderController.dropLandMark = landmark; }, controller: createOrderController.dropLandMarkController, // maxLines: 1, cursorColor: ColorConstants.textFieldColor, style: TextStyle( color: ColorConstants.textFieldColor, fontSize: 14, ), decoration: InputDecoration( fillColor: Colors.white, filled: true, prefixIcon:Icon( Icons.house,color: ColorConstants.darkGreyColor,) , border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide( width: 1.5, color: Colors.grey[100]!)), disabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(1)), borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), counterText: "", hintText: "Landmark"), ), ), ], ), const SizedBox(height: 10,), Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.end, children: [ SizedBox(width: 5,), !controller.dropSaveAddress?Container():InkWell( onTap:(){ if( controller.dropAddressController.text.isEmpty){ Toast.showToast('Drop address should not be empty'); } else if( controller.dropContactNameController.text.isEmpty){ Toast.showToast('Drop customer name should not be empty'); } else if( controller.dropContactNoController.text.isEmpty){ Toast.showToast('Drop customer no should not be empty'); } else if( controller.dropContactNoController.text.length!=10){ Toast.showToast('Please enter correct drop customer no'); } // else if( controller.dropContactNameController.text.length!=3){ // Toast.showToast('Drop customer name should be minimum 3 characters required'); // } else { // controller.dropSaveAddress = true; // controller.dropCustomerId = 0; } }, child: !controller.dropSaveAddress?Container():Row( children: [ InkWell( onTap: (){ dropSave(); }, child: Container(height: 21,width: 22, decoration: BoxDecoration(borderRadius: BorderRadius.circular(3),color: controller.dropSaveChecking==true?Colors.green:Colors.white,border: Border.all( color: controller.dropSaveChecking?Colors.green:Colors.grey[400]! ) ), child:controller.dropSaveChecking ==true?const Icon(Icons.check,color: Colors.white,size: 19,):const SizedBox(), ), ), SizedBox(width: 10,), Text('Save for later',style: TextStyle(color:ColorConstants.primaryColor),), ], ), ), Spacer(), InkWell( onTap:(){ controller.dropExpandedTileController.collapse(); }, child: Container( padding: const EdgeInsets.only(left: 20,bottom: 7,top: 7,right:20), decoration: BoxDecoration(color:ColorConstants.primaryColor,borderRadius: BorderRadius.circular(5)), child: Text('Ok',style: TextStyle(color:ColorConstants.secondaryColor),), ), ), SizedBox(width:5) ], ), const SizedBox(height: 5,), ], ), onTap: () { if (listScrollController.hasClients) { final position = listScrollController.position.minScrollExtent + 300; listScrollController.animateTo( position, duration: const Duration(seconds: 1), curve: Curves.easeOut, ); } debugPrint("drop tapped!!"); }, onLongTap: () { debugPrint("long tapped!!"); }, ), ), ], ), ], ), ), SizedBox(height: 10,), Container( height: Get.height*0.55, child:controller.loader?shimmer(): Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(left: 15), child: Text('Pickup time :',style: TextStyle(color: ColorConstants.primaryColor,fontSize: 16,fontWeight: FontWeight.bold),), ), Padding( padding: const EdgeInsets.only(left: 25,top: 15), child: Container( height:Get.height*0.04, child: controller.scheduleType!=null?controller.scheduleType =='Now'?Padding( padding: const EdgeInsets.only(left: 10), child: Row( children: [ InkWell( onTap:(){ // timeSheet(context); }, child: Container( // width: Get.width*0.50, padding: EdgeInsets.only(right: 10,left: 10,top: 6,bottom: 6), decoration: BoxDecoration(color: ColorConstants.secondaryColor,borderRadius: BorderRadius.circular(5),border: Border.all(color: ColorConstants.primaryColor)), child:Center( child: // Text("Pickup time : ${DateFormat("hh:mm a").format(DateFormat("yyyy-MM-dd HH:mm:ss").parse(controller.datetime.toString()))}",style: TextStyle(color: ColorConstants.darkGreyColor,fontSize: 16,fontWeight: FontWeight.bold),) Text("Now",style: TextStyle(color: ColorConstants.darkGreyColor,fontSize: 16,fontWeight: FontWeight.bold),) ), ), ), SizedBox(width: 10,), InkWell( onTap:(){ controller.scheduleType=null; controller.scheduleIndex = -1; controller.datetime = DateTime.now(); controller.selectedDate = DateTime.now(); controller.main(); }, child: Center(child: Icon(Icons.refresh_rounded,color:ColorConstants.primaryColor)), ) ], ), ):Row( children: [ Text("Pickup time :",style: TextStyle(color: ColorConstants.darkGreyColor,fontSize: 16,fontWeight: FontWeight.bold),), SizedBox(width: 5,), InkWell( onTap:(){ dateSheet(context); }, child: Container( width: Get.width*0.24, padding: EdgeInsets.only(right: 5,left: 5,top: 6,bottom: 6), decoration: BoxDecoration(color: ColorConstants.secondaryColor,borderRadius: BorderRadius.circular(5),border: Border.all(color: ColorConstants.primaryColor)), child: Text("${ DateFormat("dd-MM-yyyy").format(DateFormat("yyyy-MM-dd").parse(controller.selectedDate.toString())) }",style: TextStyle(color: ColorConstants.darkGreyColor,fontSize: 16,fontWeight: FontWeight.bold),), ), ), SizedBox(width: 5,), InkWell( onTap:(){ timeSheet(context); }, child: Container( width: Get.width*0.20, padding: EdgeInsets.only(right: 5,left: 5,top: 6,bottom: 6), decoration: BoxDecoration(color: ColorConstants.secondaryColor,borderRadius: BorderRadius.circular(5),border: Border.all(color: ColorConstants.primaryColor)), child: Text("${ DateFormat("hh:mm a").format(DateFormat("yyyy-MM-dd HH:mm:ss").parse(controller.datetime.toString())) }",style: TextStyle(color: ColorConstants.darkGreyColor,fontSize: 16,fontWeight: FontWeight.bold),), ), ), SizedBox(width: 10,), InkWell( onTap:(){ controller.scheduleType=null; controller.scheduleIndex = -1; controller.datetime = DateTime.now(); controller.selectedDate = DateTime.now(); controller.main(); }, child: Center(child: Icon(Icons.refresh_rounded,color:ColorConstants.primaryColor)), ) ], ):ListView.builder( padding: EdgeInsets.only(left: 0), scrollDirection: Axis.horizontal, physics: ScrollPhysics(), itemCount: controller.schedule.length, itemBuilder: (BuildContext context, int index) { return InkWell( onTap: (){ controller.scheduleIndex = index; controller.scheduleType = controller.schedule[index]['scheduleType']; print('scheduleTypeonTap ${controller.scheduleType}'); if(controller.scheduleType == 'Now'){ if (listScrollController.hasClients) { final position = listScrollController.position.maxScrollExtent + 300; listScrollController.animateTo( position, duration: const Duration(seconds: 1), curve: Curves.easeOut, ); } // timeSheet(context); } else{ if (listScrollController.hasClients) { final position = listScrollController.position.maxScrollExtent + 300; listScrollController.animateTo( position, duration: const Duration(seconds: 1), curve: Curves.easeOut, ); } dateSheet(context); } controller.update(); }, child: Padding( padding: const EdgeInsets.only(left: 10), child: Container( padding: EdgeInsets.only(right: 15,left: 15,top: 6,bottom: 6), decoration: BoxDecoration(color: controller.scheduleIndex == index?ColorConstants.primaryColor:Colors.grey[300],borderRadius: BorderRadius.circular(5)), child:Center( child: Text("${controller.schedule[index]['scheduleType']}",style: TextStyle(color: controller.scheduleIndex ==index?ColorConstants.secondaryColor:ColorConstants.darkGreyColor,fontSize: 16,fontWeight: FontWeight.bold),) ), ), ) ); }, ), ), ), Padding( padding: const EdgeInsets.only(left: 15,top: 20), child: Text('Weight :',style: TextStyle(color: ColorConstants.primaryColor,fontSize: 16,fontWeight: FontWeight.bold),), ), Padding( padding: const EdgeInsets.only(left: 25,top: 15), child: Container( height: Get.height*0.04, child: ListView.builder( scrollDirection: Axis.horizontal, itemCount: controller.weightRange.length, itemBuilder: (BuildContext context, int index) { return InkWell( onTap: (){ controller.weightSelectedIndex = index; controller.weight = controller.weightRange[index]['weight']; print('deliveryDetailsControllerweightRange${controller.weight}'); controller.update(); }, child:Padding( padding: const EdgeInsets.only(left: 10), child: Container( padding: EdgeInsets.only(right: 15,left: 15,top: 6,bottom: 6), decoration: BoxDecoration(color: controller.weightSelectedIndex == index?ColorConstants.secondaryColor:Colors.grey[300],borderRadius: BorderRadius.circular(5),border: Border.all(color: controller.weightSelectedIndex == index?ColorConstants.primaryColor:Colors.grey[300]!)), child: Column( children: [ Center(child: Text(controller.weightRange[index]['weight'],style: TextStyle(color: controller.weightSelectedIndex == index?ColorConstants.darkGreyColor:ColorConstants.darkGreyColor,fontSize: 15,fontWeight: FontWeight.bold),)), ], ), ), ) ); }, ), ), ), Padding( padding: const EdgeInsets.only(left: 15,top: 20), child: Text('Item category :',style: TextStyle(color: ColorConstants.primaryColor,fontSize: 16,fontWeight: FontWeight.bold),), ), Padding( padding: const EdgeInsets.only(left: 25,top: 15), child: Container( height: Get.height*0.05, child: InkWell( onTap: (){ showModalBottomSheet( isDismissible: true, shape: RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(15.0), topRight: Radius.circular(15)), ), context: context, builder: (builder) { return Container( height: Get.height, child:Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(top: 10,left: 10), child: Text('Select categories :',style: TextStyle(color: ColorConstants.primaryColor,fontSize: 18,fontWeight: FontWeight.bold,),), ), SizedBox(height: 20,), Expanded( child: GridView.builder( itemCount: controller.subCategoryLists.length, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 1, crossAxisSpacing: 4, mainAxisSpacing: 4, childAspectRatio: 8.5, ), itemBuilder: ( context, index, ) { print('subCategoryListslengthinview${controller.subCategoryLists.length}'); return InkWell( onTap: () { controller.catSelectedIndex = index; controller.subCatId =(controller.subCategoryLists[index].subcategoryid); controller.subCatName =(controller.subCategoryLists[index].subcategoryname); controller.update(); print('SubCategoryListSubcategoryid ${controller.subCategoryLists[index].subcategoryid}'); print('SubCategoryListSubcategoryname ${controller.subCategoryLists[index].subcategoryname}'); Get.back(); // Navigator.pop(context); }, child: Stack( children: [ Row( children: [ SizedBox( width: 15, ), // Text( // '${controller.subCategoryLists[index].subcategoryname}',style: TextStyle(fontSize: 17,fontWeight: FontWeight.bold,),), ], ), controller.subCategoryLists[index].subcategoryid == controller.subCatId ? Positioned( right: 10, top: 8, child: Icon( Icons.check_circle_outline, color: Colors.green, )) : Positioned( right: 10, top: 8, child: Icon( Icons.check_circle_outline, color: Colors.grey[400], )) ], ), ); }), ), ], ), ); }); }, child: Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(top: 0,left: 10), child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ controller.subCatName==null? Container( padding: EdgeInsets.only(left: 10,right: 10,top: 10,bottom: 10), decoration: BoxDecoration(color: ColorConstants.secondaryColor,borderRadius: BorderRadius.circular(10),border: Border.all(color:ColorConstants.primaryColor)), child: Center( child: Text("${controller.subcategoryName}" ??"",style: TextStyle(fontSize: 15,color:ColorConstants.darkGreyColor,fontWeight: FontWeight.bold)))): Container( // height:Get.height*0.04, // width: Get.width*0.3, padding: EdgeInsets.only(left: 10,right: 10,top: 10,bottom: 10), decoration: BoxDecoration(color: ColorConstants.secondaryColor,borderRadius: BorderRadius.circular(10),border: Border.all(color:ColorConstants.primaryColor)), child: Center( child: Text("${controller.subCatName}" ??"",style: TextStyle(fontSize: 15,color:ColorConstants.darkGreyColor,fontWeight: FontWeight.bold)))), ], ), ) ], ), ), ), ), Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(left: 10,top: 20), child: Text('Instructions :',style: TextStyle(color: ColorConstants.primaryColor,fontSize: 16,fontWeight: FontWeight.bold),), ), ], ), const SizedBox( height: 10, ), Padding( padding: const EdgeInsets.only(top: 5,left: 10,right: 10,bottom: 5), child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ TextField( decoration: InputDecoration( fillColor: Colors.white, filled: true, border: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(6)), borderSide: BorderSide( width: 1.5, color: Colors.grey[300]!)), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(6)), borderSide: BorderSide( width: 1.5, color: Colors.grey[300]!)), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(6)), borderSide: BorderSide( width: 1.5, color: Colors.grey[300]!)), disabledBorder: OutlineInputBorder( borderRadius: BorderRadius.all(Radius.circular(6)), borderSide: BorderSide(width: 1, color: Colors.grey.shade50)), counterText: "", hintText: "Instructions if any?"), controller: createOrderController.tecNotes, keyboardType: TextInputType.text, maxLines: 3, maxLength: 180, onChanged: (notes) { // widget.model.Ordernotes = notes; }, ), ], ), ), ], ), ], ), ), ], ), ], ), bottomNavigationBar: SizedBox( height: Get.height*0.08, child: Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ Center( child: Padding( padding: const EdgeInsets.only(bottom: 11,top: 0), child: RoundedButton( onPressed: () { if(controller.timeSlotsnew.isEmpty){ AwesomeDialog( context: Get.context!, dialogType: DialogType.error, //animType: AnimType.BOTTOMSLIDE, descTextStyle: const TextStyle(fontSize: 16,), title: 'Warning', desc: 'We are unable to process the order at this time. Kindly schedule it for an other day.', dismissOnTouchOutside: false, // btnCancelOnPress: () { // }, btnOkOnPress: () { Get.to(()=>CreateOrderView( isDashboard: isDashboard,)); }, ).show(); controller.btnController.reset(); } else { controller.describeValidation(); } }, color:ColorConstants.primaryColor, title: 'Proceed', controller: createOrderController.btnController, textStyle: const TextStyle( fontSize: 18, fontFamily: "Lato", color: Colors.white, fontWeight: FontWeight.bold), height: Get.height*0.06, width: Get.width*0.8, ), )), ], ), ), ), ); } ); } dateSheet(context) async{ DateTime? picked = await showDatePicker( context: context, initialDate: createOrderController.selectedDate, firstDate: DateTime(2000), lastDate: DateTime(2101), builder: (context, child) { return GestureDetector( onTap: () { FocusManager.instance.primaryFocus?.unfocus(); }, child: Theme( data: Theme.of(context).copyWith( colorScheme: ColorScheme.light( primary: ColorConstants.primaryColor, onPrimary: ColorConstants.secondaryColor!, onSurface: Colors.black, ), // backgroundColor: ColorConstants.secondaryColor, dialogBackgroundColor: ColorConstants.secondaryColor, textButtonTheme: TextButtonThemeData( style: TextButton.styleFrom( // backgroundColor: ColorConstants.primaryColor, // Colors.red, ), ), ), child: GestureDetector( onTap: () { FocusManager.instance.primaryFocus?.unfocus(); }, child: child!), ), ); }, ); if (picked != null && picked != createOrderController.selectedDate) { createOrderController.selectedDate = picked; createOrderController.datetime = picked; createOrderController.timeSelectIndex = -1; createOrderController.main(); createOrderController.update(); } } timeSheet(context) { showModalBottomSheet( isDismissible: true, shape: RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(15.0), topRight: Radius.circular(15)), ), context: context, builder: (builder) { return Padding( padding: const EdgeInsets.only(left: 8,right: 10), child: Container( height: Get.height*0.40, child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox(height: 5,), createOrderController.timeSlotsnew.isEmpty? Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Image( height: 160, width: 160, image: AssetImage(AssetConstants.NoRecords), ), SizedBox( height: 8, ), Text('No slots available at this time',style: TextStyle(fontSize: 16,fontWeight: FontWeight.bold,color: Colors.grey[600]),), ], ) ) : Expanded( child: GetBuilder( builder: (controller) { return Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(top: 10,left: 10), child: Text('Select pickuptime :',style: TextStyle(fontSize: 16,fontWeight: FontWeight.bold,color: Colors.grey[600]),), ), SizedBox(height: 15,), Container( height: Get.height*0.32, child: GridView.builder( scrollDirection: Axis.vertical, shrinkWrap: true, padding: EdgeInsets.symmetric(horizontal: 5), itemCount: controller.timeSlotsnew.length, itemBuilder: (ctx, index) { print('deliveryTime..........${controller.timeSlotsnew.length}'); return Container( height: Get.height*0.06, width: Get.width*0.3, child: InkWell( onTap: (){ controller.timeSelectIndex = index; controller.datetime = DateTime.parse(controller.timeSlotsnew[index].toString()); controller.update(); Get.back(); print('deliveryTime................${controller.datetime}'); }, child: Card( color: controller.timeSelectIndex == index? ColorConstants.primaryColor1 : Colors.grey[100], elevation: 2, child: Center(child: Text('${DateFormat("hh.mm a").format(DateFormat("yyyy-MM-dd HH:mm:ss").parse(controller.timeSlotsnew[index]))}',style: TextStyle(fontSize: 14,fontWeight: FontWeight.bold),)), ), ), ); }, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, childAspectRatio: 2.0, crossAxisSpacing: 0.0, mainAxisSpacing: 1, mainAxisExtent: 50, ), ), ), ], ); } ), ), ], ), ), ); }); } bool pickupSave() { createOrderController.update(); createOrderController.pikUpSaveChecking = !createOrderController.pikUpSaveChecking; print('pikUpSaveCheckingpickupSave ${ createOrderController.pikUpSaveChecking}'); return createOrderController.pikUpSaveChecking; } bool dropSave() { createOrderController.update(); createOrderController.dropSaveChecking = !createOrderController.dropSaveChecking; print('dropSaveCheckingCheckingdropSave ${ createOrderController.dropSaveChecking}'); return createOrderController.dropSaveChecking; } shimmer(){ return Container( height: Get.height*0.55, child: Shimmer.fromColors( enabled: true, highlightColor: ColorConstants.lightGreyBg!, baseColor: Colors.grey[300]!, child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(left: 15), child: Text('Pickup time :',style: TextStyle(color: ColorConstants.primaryColor,fontSize: 16,fontWeight: FontWeight.bold),), ), Padding( padding: const EdgeInsets.only(left: 25,top: 15), child: Container( height:Get.height*0.04, child: ListView.builder( padding: EdgeInsets.only(left: 0), scrollDirection: Axis.horizontal, physics: ScrollPhysics(), itemCount: 2, itemBuilder: (BuildContext context, int index) { return InkWell( onTap: (){ }, child: Padding( padding: const EdgeInsets.only(left: 10), child: Container( width : Get.width*0.20, padding: EdgeInsets.only(right: 15,left: 15,top: 6,bottom: 6), decoration: BoxDecoration(color:Colors.grey[300],borderRadius: BorderRadius.circular(5)), child:Center( child: Text("",style: TextStyle(color: ColorConstants.darkGreyColor,fontSize: 16,fontWeight: FontWeight.bold),) ), ), ) ); }, ), ), ), Padding( padding: const EdgeInsets.only(left: 15,top: 20), child: Text('Weight :',style: TextStyle(color: ColorConstants.primaryColor,fontSize: 16,fontWeight: FontWeight.bold),), ), Padding( padding: const EdgeInsets.only(left: 25,top: 15), child: Container( height: Get.height*0.04, child: ListView.builder( scrollDirection: Axis.horizontal, itemCount: 3, itemBuilder: (BuildContext context, int index) { return InkWell( onTap: (){ }, child:Padding( padding: const EdgeInsets.only(left: 10), child: Container( width : Get.width*0.20, padding: EdgeInsets.only(right: 15,left: 15,top: 6,bottom: 6), decoration: BoxDecoration(color: Colors.grey[300],borderRadius: BorderRadius.circular(5),border: Border.all(color: Colors.grey[300]!)), child: Column( children: [ Center(child: Text("",style: TextStyle(color: ColorConstants.darkGreyColor,fontSize: 15,fontWeight: FontWeight.bold),)), ], ), ), ) ); }, ), ), ), Padding( padding: const EdgeInsets.only(left: 15,top: 20), child: Text('Item category :',style: TextStyle(color: ColorConstants.primaryColor,fontSize: 16,fontWeight: FontWeight.bold),), ), Padding( padding: const EdgeInsets.only(left: 25,top: 15), child: Container( height: Get.height*0.05, child: InkWell( onTap: (){ }, child: Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(top: 0,left: 10), child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( width : Get.width*0.20, // height:Get.height*0.04, // width: Get.width*0.3, padding: EdgeInsets.only(left: 10,right: 10,top: 10,bottom: 10), decoration: BoxDecoration(color: ColorConstants.secondaryColor,borderRadius: BorderRadius.circular(10),border: Border.all(color:ColorConstants.primaryColor)), child: Center( child: Text("",style: TextStyle(fontSize: 15,color:ColorConstants.darkGreyColor,fontWeight: FontWeight.bold)))), ], ), ) ], ), ), ), ), Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(left: 10,top: 20), child: Text('Instructions :',style: TextStyle(color: ColorConstants.primaryColor,fontSize: 16,fontWeight: FontWeight.bold),), ), ], ), const SizedBox( height: 10, ), Padding( padding: const EdgeInsets.only(top: 5,left: 10,right: 10,bottom: 5), child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( height: Get.height*0.08, width : Get.width*0.95, // padding: EdgeInsets.only(left: 10,right: 10,top: 10,bottom: 10), decoration: BoxDecoration(color: ColorConstants.secondaryColor,borderRadius: BorderRadius.circular(10),border: Border.all(color:ColorConstants.primaryColor)), child: Center( child: Text("",style: TextStyle(fontSize: 15,color:ColorConstants.darkGreyColor,fontWeight: FontWeight.bold)))), ], ), ), ], ), ], ), ), ); } } class UpperCaseTextFormatter extends TextInputFormatter { @override TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) { return TextEditingValue( text: capitalize(newValue.text), selection: newValue.selection, ); } } String capitalize(String value) { if(value.trim().isEmpty) return ""; return "${value[0].toUpperCase()}${value.substring(1)}"; }