From 656dbfd5acf35b7f34b16267445877db70aa30f8 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Mon, 13 Jan 2025 09:37:52 +0300 Subject: [PATCH] Changes --- .../advertisment_models/ad_details_model.dart | 6 + .../vehicle_details_models.dart | 5 +- .../general_models/generic_resp_model.dart | 115 +++++++----------- lib/repositories/ads_repo.dart | 4 +- lib/view_models/ad_view_model.dart | 26 ++-- .../ads_detail_view/ads_detail_view.dart | 2 +- lib/views/common_fragments/ads_fragment.dart | 3 +- .../common_fragments/requests_fragment.dart | 2 +- .../provider_accepted_requests_view.dart | 2 +- .../shipping_management_view.dart | 2 +- ...categories_list.dart => filters_list.dart} | 18 ++- lib/widgets/dropdown/dropdow_field.dart | 16 ++- lib/widgets/txt_field.dart | 22 +++- 13 files changed, 125 insertions(+), 98 deletions(-) rename lib/widgets/common_widgets/{categories_list.dart => filters_list.dart} (80%) diff --git a/lib/models/advertisment_models/ad_details_model.dart b/lib/models/advertisment_models/ad_details_model.dart index 83f4575..83db175 100644 --- a/lib/models/advertisment_models/ad_details_model.dart +++ b/lib/models/advertisment_models/ad_details_model.dart @@ -37,6 +37,8 @@ class AdDetailsModel { double? priceExcludingDiscount; double? reservePrice; bool? isMCHandled; + bool? showContactDetail; + bool? isOnWhatsApp; String? modifiedOn; AdPostStatus? adPostStatus; AdReserveStatus? adReserveStatus; @@ -83,6 +85,8 @@ class AdDetailsModel { this.priceExcludingDiscount, this.reservePrice, this.isMCHandled, + this.showContactDetail, + this.isOnWhatsApp, this.adPostStatus, this.adReserveStatus, this.isMyAd, @@ -140,6 +144,8 @@ class AdDetailsModel { priceExcludingDiscount = json['priceExcludingDiscount']; reservePrice = json['reservePrice']; isMCHandled = json['isMCHandled']; + showContactDetail = json['showContactDetail']; + isOnWhatsApp = json['isOnWhatsApp']; modifiedOn = json['modifiedOn']; phoneNo = json['vehicle'] != null ? (json['vehicle']['mobileNo'] ?? "") : ""; whatsAppNo = json['vehicle'] != null ? (json['vehicle']['whatsAppNo'] ?? "") : ""; diff --git a/lib/models/advertisment_models/vehicle_details_models.dart b/lib/models/advertisment_models/vehicle_details_models.dart index 5728ae9..d7c5852 100644 --- a/lib/models/advertisment_models/vehicle_details_models.dart +++ b/lib/models/advertisment_models/vehicle_details_models.dart @@ -451,10 +451,11 @@ class VehicleBrandsModel { String? vehicleTypeVal; String? vehicleBrandDescription; String? vehicleBrandDescriptionN; + String? imageUrl; bool? isActive; bool? isSelected; - VehicleBrandsModel({this.id, this.vehicleType, this.vehicleTypeVal, this.vehicleBrandDescription, this.vehicleBrandDescriptionN, this.isActive, this.isSelected}); + VehicleBrandsModel({this.id, this.vehicleType, this.vehicleTypeVal, this.vehicleBrandDescription, this.vehicleBrandDescriptionN, this.isActive, this.isSelected, this.imageUrl}); VehicleBrandsModel.fromJson(Map json) { id = json['id']; @@ -463,6 +464,7 @@ class VehicleBrandsModel { vehicleBrandDescription = json['vehicleBrand_Description']; vehicleBrandDescriptionN = json['vehicleBrand_DescriptionN']; isActive = json['isActive']; + imageUrl = json['imageUrl']; isSelected = false; } @@ -473,6 +475,7 @@ class VehicleBrandsModel { data['vehicleTypeVal'] = vehicleTypeVal; data['vehicleBrand_Description'] = vehicleBrandDescription; data['vehicleBrand_DescriptionN'] = vehicleBrandDescriptionN; + data['imageUrl'] = imageUrl; data['isActive'] = isActive; return data; } diff --git a/lib/models/general_models/generic_resp_model.dart b/lib/models/general_models/generic_resp_model.dart index 0f036e3..38892c9 100644 --- a/lib/models/general_models/generic_resp_model.dart +++ b/lib/models/general_models/generic_resp_model.dart @@ -47,17 +47,6 @@ class AdsCreationPayloadModel { ads = json['ads'] != null ? Ads.fromJson(json['ads']) : null; vehiclePosting = json['vehiclePosting'] != null ? VehiclePosting.fromJson(json['vehiclePosting']) : null; } - - Map toJson() { - final Map data = {}; - if (ads != null) { - data['ads'] = ads!.toJson(); - } - if (vehiclePosting != null) { - data['vehiclePosting'] = vehiclePosting!.toJson(); - } - return data; - } } class Ads { @@ -67,8 +56,19 @@ class Ads { int? countryId; List? specialServiceIDs; bool? isMCHandled; - - Ads({this.id, this.adsDurationID, this.startDate, this.countryId, this.specialServiceIDs, this.isMCHandled}); + bool? showContactDetail; + bool? isOnWhatsApp; + + Ads({ + this.id, + this.adsDurationID, + this.startDate, + this.countryId, + this.specialServiceIDs, + this.isMCHandled, + this.showContactDetail, + this.isOnWhatsApp, + }); Ads.fromJson(Map json) { id = json['id']; @@ -77,6 +77,8 @@ class Ads { countryId = json['countryId']; specialServiceIDs = json['specialServiceIDs'].cast(); isMCHandled = json['isMCHandled']; + showContactDetail = json['showContactDetail']; + isOnWhatsApp = json['isOnWhatsApp']; } Map toJson() { @@ -123,32 +125,33 @@ class VehiclePosting { String? phoneNo; String? whatsAppNo; - VehiclePosting( - {this.id, - this.userID, - this.vehicleType, - this.vehicleModelID, - this.vehicleModelYearID, - this.vehicleColorID, - this.vehicleCategoryID, - this.vehicleConditionID, - this.vehicleMileageID, - this.vehicleTransmissionID, - this.vehicleSellerTypeID, - this.cityID, - this.price, - this.vehicleVIN, - this.vehicleDescription, - this.vehicleTitle, - this.vehicleDescriptionN, - this.isFinanceAvailable, - this.warantyYears, - this.demandAmount, - this.adStatus, - this.phoneNo, - this.whatsAppNo, - this.vehiclePostingImages, - this.vehiclePostingDamageParts}); + VehiclePosting({ + this.id, + this.userID, + this.vehicleType, + this.vehicleModelID, + this.vehicleModelYearID, + this.vehicleColorID, + this.vehicleCategoryID, + this.vehicleConditionID, + this.vehicleMileageID, + this.vehicleTransmissionID, + this.vehicleSellerTypeID, + this.cityID, + this.price, + this.vehicleVIN, + this.vehicleDescription, + this.vehicleTitle, + this.vehicleDescriptionN, + this.isFinanceAvailable, + this.warantyYears, + this.demandAmount, + this.adStatus, + this.phoneNo, + this.whatsAppNo, + this.vehiclePostingImages, + this.vehiclePostingDamageParts, + }); VehiclePosting.fromJson(Map json) { id = json['id']; @@ -188,40 +191,6 @@ class VehiclePosting { } } - Map toJson() { - final Map data = {}; - data['id'] = id; - data['userID'] = userID; - data['vehicleType'] = vehicleType; - data['vehicleModelID'] = vehicleModelID; - data['vehicleModelYearID'] = vehicleModelYearID; - data['vehicleColorID'] = vehicleColorID; - data['vehicleCategoryID'] = vehicleCategoryID; - data['vehicleConditionID'] = vehicleConditionID; - data['vehicleMileageID'] = vehicleMileageID; - data['vehicleTransmissionID'] = vehicleTransmissionID; - data['vehicleSellerTypeID'] = vehicleSellerTypeID; - data['cityID'] = cityID; - data['price'] = price; - data['vehicleVIN'] = vehicleVIN; - data['vehicleDescription'] = vehicleDescription; - data['vehicleTitle'] = vehicleTitle; - data['vehicleDescriptionN'] = vehicleDescriptionN; - data['isFinanceAvailable'] = isFinanceAvailable; - data['warantyYears'] = warantyYears; - data['demandAmount'] = demandAmount; - data['adStatus'] = adStatus; - data['phoneNo'] = phoneNo; - data['whatsAppNo'] = whatsAppNo; - if (vehiclePostingImages != null) { - data['vehiclePostingImages'] = vehiclePostingImages!.map((v) => v.toJson()).toList(); - } - if (vehiclePostingDamageParts != null) { - data['vehiclePostingDamageParts'] = vehiclePostingDamageParts!.map((v) => v.toJson()).toList(); - } - return data; - } - @override String toString() { return 'VehiclePosting{id: $id, userID: $userID, vehicleType: $vehicleType, vehicleModelID: $vehicleModelID, vehicleModelYearID: $vehicleModelYearID, vehicleColorID: $vehicleColorID, vehicleCategoryID: $vehicleCategoryID, vehicleConditionID: $vehicleConditionID, vehicleMileageID: $vehicleMileageID, vehicleTransmissionID: $vehicleTransmissionID, vehicleSellerTypeID: $vehicleSellerTypeID, cityID: $cityID, price: $price, vehicleVIN: $vehicleVIN, vehicleDescription: $vehicleDescription, vehicleTitle: $vehicleTitle, vehicleDescriptionN: $vehicleDescriptionN, isFinanceAvailable: $isFinanceAvailable, warantyYears: $warantyYears, demandAmount: $demandAmount, adStatus: $adStatus, vehiclePostingImages: $vehiclePostingImages, vehiclePostingDamageParts: $vehiclePostingDamageParts, phoneNo: $phoneNo, whatsAppNo: $whatsAppNo}'; diff --git a/lib/repositories/ads_repo.dart b/lib/repositories/ads_repo.dart index 0a2a7fd..40d292c 100644 --- a/lib/repositories/ads_repo.dart +++ b/lib/repositories/ads_repo.dart @@ -159,7 +159,9 @@ class AdsRepoImp implements AdsRepo { "startDate": adsCreationPayloadModel.ads!.startDate, "countryId": adsCreationPayloadModel.ads!.countryId, "specialServiceIDs": adsCreationPayloadModel.ads!.specialServiceIDs, - "isMCHandled": false + "isMCHandled": false, + "showContactDetail": adsCreationPayloadModel.ads!.showContactDetail ?? false, + "isOnWhatsApp": adsCreationPayloadModel.ads!.isOnWhatsApp ?? false, }, "vehiclePosting": { "id": adsCreationPayloadModel.vehiclePosting!.id ?? 0, diff --git a/lib/view_models/ad_view_model.dart b/lib/view_models/ad_view_model.dart index a2bb7c1..8e16e07 100644 --- a/lib/view_models/ad_view_model.dart +++ b/lib/view_models/ad_view_model.dart @@ -194,7 +194,7 @@ class AdVM extends BaseVM { exploreAdsFilterOptions.add(FilterListModel( id: vehicleBrandsForFilters[i].id!, title: "${vehicleBrandsForFilters[i].vehicleBrandDescription}", - iconUrl: "", + iconUrl: vehicleBrandsForFilters[i].imageUrl ?? "", isSelected: false, )); } @@ -1553,12 +1553,26 @@ class AdVM extends BaseVM { for (var value in specialServiceCards) { adsSelectedServices.add(value.serviceSelectedId!.selectedId); } + + if (selectionDurationStartDate.isNotEmpty) { + // Define the format of the input string + DateTime startDate = DateTime.parse( + "${selectionDurationStartDate.split('-')[2]}-${selectionDurationStartDate.split('-')[1]}-${selectionDurationStartDate.split('-')[0]}", + ); + DateTime currentDate = DateTime.now(); + + if (startDate.isBefore(currentDate)) { + selectionDurationStartDate = DateHelper.formatAsYearMonthDay(currentDate); + } + } Ads ads = Ads( id: isAdEditEnabled ? previousAdDetails!.id : null, adsDurationID: vehicleAdDurationId.selectedId == -1 ? 0 : vehicleAdDurationId.selectedId, startDate: selectionDurationStartDate, countryId: vehicleCountryId.selectedId, specialServiceIDs: adsSelectedServices, + showContactDetail: isPhoneNumberShown, + isOnWhatsApp: isNumberOnWhatsApp, ); List vehicleImages = []; @@ -2048,6 +2062,7 @@ class AdVM extends BaseVM { void autoFillSelectedVehicleAdsDetails() async { int index = vehicleBrands.indexWhere((element) => element.id == previousAdDetails!.vehicle!.model!.vehicleBrandID); + if (index != -1) { await updateSelectionVehicleBrandId(SelectionModel(selectedId: vehicleBrands[index].id!, selectedOption: vehicleBrands[index].vehicleBrandDescription ?? "")); } @@ -2067,8 +2082,8 @@ class AdVM extends BaseVM { if (indexCountry != -1) { updateSelectionVehicleCountryId(SelectionModel(selectedId: vehicleCountries[indexCountry].id!, selectedOption: vehicleCountries[indexCountry].countryName ?? "")); } - updateSelectionVehicleCityId(SelectionModel(selectedId: previousAdDetails!.vehicle!.cityID!, selectedOption: previousAdDetails!.vehicle!.cityName ?? "")); + updateSelectionVehicleCityId(SelectionModel(selectedId: previousAdDetails!.vehicle!.cityID!, selectedOption: previousAdDetails!.vehicle!.cityName ?? "")); vehicleDemandAmount = previousAdDetails!.vehicle!.demandAmount!.toInt().toString(); vehicleVin = previousAdDetails!.vehicle!.vehicleVIN.toString(); vehicleTitle = previousAdDetails!.vehicle!.vehicleTitle.toString(); @@ -2126,11 +2141,8 @@ class AdVM extends BaseVM { // selectionDurationStartDate = DateHelper.formatDateT(previousAdDetails!.startdate ?? ""); selectionDurationStartDate = ""; - isPhoneNumberShown = previousAdDetails!.phoneNo != null; - if (isPhoneNumberShown) { - adPhoneNumber = previousAdDetails!.phoneNo ?? ""; - adPhoneNumberDialCode = "+966"; - } + isPhoneNumberShown = previousAdDetails!.showContactDetail ?? false; + adPhoneNumber = previousAdDetails!.adOwnerDetails!.mobileNo ?? ""; isNumberOnWhatsApp = previousAdDetails!.whatsAppNo != null; warrantyDuration = previousAdDetails!.warrantyYears ?? ""; diff --git a/lib/views/advertisement/ads_detail_view/ads_detail_view.dart b/lib/views/advertisement/ads_detail_view/ads_detail_view.dart index c5a6ee6..44b8688 100644 --- a/lib/views/advertisement/ads_detail_view/ads_detail_view.dart +++ b/lib/views/advertisement/ads_detail_view/ads_detail_view.dart @@ -422,7 +422,7 @@ class _AdsDetailViewState extends State { if (widget.adDetails.vehicle!.damagereport != null && widget.adDetails.vehicle!.damagereport!.isNotEmpty) ...[ buildDamagePartDetails(), ], - if (!(widget.adDetails.isMyAd ?? false)) ...[ + if ((!(widget.adDetails.isMyAd ?? false) && (widget.adDetails.showContactDetail ?? false))) ...[ 12.height, buildPersonalInformationCard(context: context), ], diff --git a/lib/views/common_fragments/ads_fragment.dart b/lib/views/common_fragments/ads_fragment.dart index df84976..0d4a3c3 100644 --- a/lib/views/common_fragments/ads_fragment.dart +++ b/lib/views/common_fragments/ads_fragment.dart @@ -18,7 +18,7 @@ import 'package:mc_common_app/view_models/ad_view_model.dart'; import 'package:mc_common_app/views/advertisement/components/ads_list_widget.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/common_widgets/categories_list.dart'; +import 'package:mc_common_app/widgets/common_widgets/filters_list.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; @@ -108,6 +108,7 @@ class AdsFragment extends StatelessWidget { if (adVM.adsFiltersCounter == 0) ...[ 16.height, FiltersList( + showImages: true, filterList: adVM.exploreAdsFilterOptions, onFilterTapped: (index, selectedFilterId) { adVM.applyFilterOnExploreAds(vehicleBrandId: selectedFilterId); diff --git a/lib/views/common_fragments/requests_fragment.dart b/lib/views/common_fragments/requests_fragment.dart index a1f397a..7689f2e 100644 --- a/lib/views/common_fragments/requests_fragment.dart +++ b/lib/views/common_fragments/requests_fragment.dart @@ -15,7 +15,7 @@ import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/views/requests/widget/request_item.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/common_widgets/categories_list.dart'; +import 'package:mc_common_app/widgets/common_widgets/filters_list.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; import 'package:easy_localization/easy_localization.dart'; diff --git a/lib/views/setting_options/provider_accepted_requests_view.dart b/lib/views/setting_options/provider_accepted_requests_view.dart index f9dba42..5d1c963 100644 --- a/lib/views/setting_options/provider_accepted_requests_view.dart +++ b/lib/views/setting_options/provider_accepted_requests_view.dart @@ -17,7 +17,7 @@ import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/enums.dart'; import 'package:mc_common_app/views/requests/widget/request_item.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/common_widgets/categories_list.dart'; +import 'package:mc_common_app/widgets/common_widgets/filters_list.dart'; import 'package:provider/provider.dart'; import 'package:easy_localization/easy_localization.dart'; diff --git a/lib/views/shipping_management/shipping_management_view.dart b/lib/views/shipping_management/shipping_management_view.dart index 3e7d766..025b27d 100644 --- a/lib/views/shipping_management/shipping_management_view.dart +++ b/lib/views/shipping_management/shipping_management_view.dart @@ -15,7 +15,7 @@ import 'package:mc_common_app/view_models/shipping_management_view_model.dart'; import 'package:mc_common_app/widgets/button/show_fill_button.dart'; import 'package:mc_common_app/widgets/checkbox_with_title_desc.dart'; import 'package:mc_common_app/widgets/common_widgets/app_bar.dart'; -import 'package:mc_common_app/widgets/common_widgets/categories_list.dart'; +import 'package:mc_common_app/widgets/common_widgets/filters_list.dart'; import 'package:mc_common_app/widgets/common_widgets/info_bottom_sheet.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/txt_field.dart'; diff --git a/lib/widgets/common_widgets/categories_list.dart b/lib/widgets/common_widgets/filters_list.dart similarity index 80% rename from lib/widgets/common_widgets/categories_list.dart rename to lib/widgets/common_widgets/filters_list.dart index f3d0039..97aa89a 100644 --- a/lib/widgets/common_widgets/categories_list.dart +++ b/lib/widgets/common_widgets/filters_list.dart @@ -1,3 +1,5 @@ +import 'dart:developer'; + import 'package:flutter/material.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/models/general_models/widgets_models.dart'; @@ -8,6 +10,7 @@ class FiltersList extends StatelessWidget { final List filterList; final Function(int, int) onFilterTapped; final bool needLeftPadding; + final bool showImages; final EdgeInsets? padding; const FiltersList({ @@ -15,6 +18,7 @@ class FiltersList extends StatelessWidget { this.padding, required this.filterList, this.needLeftPadding = true, + this.showImages = true, required this.onFilterTapped, }); @@ -47,14 +51,16 @@ class FiltersList extends StatelessWidget { ), child: Row( mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, children: [ // Icon before the text - - // if (index != 0 || filterList[index].iconUrl.isNotEmpty) ...[ - // filterList[index].iconUrl.buildNetworkImage(height: 16, width: 16, fit: BoxFit.cover), - // const SizedBox(width: 4), // Space between icon and text - // ], - + if (showImages) ...[ + if (index != 0 && filterList[index].iconUrl.isNotEmpty) ...[ + filterList[index].iconUrl.buildNetworkImage(height: 25, width: 25, fit: BoxFit.contain), + const SizedBox(width: 4), // Space between icon and text + ], + ], // Text displayed in the chip filterList[index].title.toText( fontSize: 13, diff --git a/lib/widgets/dropdown/dropdow_field.dart b/lib/widgets/dropdown/dropdow_field.dart index 7e4bbff..37999e3 100644 --- a/lib/widgets/dropdown/dropdow_field.dart +++ b/lib/widgets/dropdown/dropdow_field.dart @@ -1,6 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/classes/consts.dart'; +import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/utils.dart'; @@ -57,6 +58,19 @@ class _DropdownFieldState extends State { dropdownValue = widget.dropdownValue; return Column( children: [ + if (widget.hint != null) ...[ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + (widget.hint ?? "").toText( + color: borderColor, + fontSize: 13, + fontWeight: MyFonts.Medium, + ), + ], + ), + 4.height, + ], IgnorePointer( ignoring: !widget.isSelectAble, child: Container( @@ -81,7 +95,7 @@ class _DropdownFieldState extends State { color: borderColor, fontSize: 15, ), - hint: (widget.hint ?? "").toText(color: borderColor, fontSize: 15, fontWeight: MyFonts.Medium), + // hint: (widget.hint ?? "").toText(color: borderColor, fontSize: 15, fontWeight: MyFonts.Medium), underline: Container(height: 0), onChanged: (DropValue? newValue) { setState(() { diff --git a/lib/widgets/txt_field.dart b/lib/widgets/txt_field.dart index fcca91c..8781a4c 100644 --- a/lib/widgets/txt_field.dart +++ b/lib/widgets/txt_field.dart @@ -9,7 +9,6 @@ import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:sizer/sizer.dart'; class TxtField extends StatelessWidget { - TextEditingController controller = TextEditingController(); String? value; String? hint; String? lable; @@ -69,6 +68,8 @@ class TxtField extends StatelessWidget { this.allowOnlyOneDigit = false, }); + TextEditingController controller = TextEditingController(); + @override Widget build(BuildContext context) { controller.text = value ?? ""; @@ -76,6 +77,19 @@ class TxtField extends StatelessWidget { return Column( children: [ + if (hint != null) ...[ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + (hint ?? "").toText( + color: borderColor, + fontSize: 13, + fontWeight: MyFonts.Medium, + ), + ], + ), + 4.height, + ], InkWell( onTap: isNeedClickAll == false ? null @@ -133,9 +147,9 @@ class TxtField extends StatelessWidget { ) : postfixWidget, prefixIcon: prefixData != null ? Icon(prefixData, color: borderColor) : preFixWidget, - labelStyle: const TextStyle(color: borderColor, fontSize: 15, fontWeight: MyFonts.Medium), - hintStyle: const TextStyle(color: borderColor, fontSize: 15, fontWeight: MyFonts.Medium), - hintText: hint ?? "", + labelStyle: const TextStyle(color: borderColor, fontSize: 13, fontWeight: MyFonts.Medium), + hintStyle: const TextStyle(color: borderColor, fontSize: 13, fontWeight: MyFonts.Medium), + // hintText: hint ?? "", contentPadding: prefixData == null ? EdgeInsets.only( left: 12,