Added select_ad_type_view.dart

pull/3/head
Faiz Hashmi 2 years ago
parent ba0b66d7e5
commit 0b7b121806

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32.302" height="21.85" viewBox="0 0 32.302 21.85">
<g id="buggy" transform="translate(0.002 -82.84)">
<g id="Page-1_7_" transform="translate(-0.002 82.84)">
<g id="mobility_filled_7_" transform="translate(0 0)">
<path id="buggy_x2C_-lightweight_x2C_-offroad_x2C_-car_x2C_-vehicle" d="M304.437,641.49l-.263-.525a.95.95,0,0,1-.082-.611l.95-4.75a.95.95,0,0,1,.932-.764h8.55a.95.95,0,0,1,.773.4l4.466,6.252h3.217a4.75,4.75,0,0,1,4.341,2.821l.9,2.018a.95.95,0,0,1-.868,1.336h-3.907l.327.98a4.037,4.037,0,1,1-1.78.67l-.55-1.65h-.694L317.7,652.45a.95.95,0,0,1-.8.44h-10.45a.95.95,0,0,1-.865-.557l-2.122-4.668h-.6l-.55,1.65a4.038,4.038,0,1,1-2.272-.7,4.078,4.078,0,0,1,.493.03l.327-.98h-3.907a.95.95,0,0,1-.868-1.336l1.9-4.275a.95.95,0,0,1,.868-.564h5.588Zm9.137,2.768-.278.278a.95.95,0,0,1-1.343-1.343l1.9-1.9a.95.95,0,0,1,1.343,1.343l-.278.278L316.4,644.4l1.671-2.006-4.039-5.655h-7.282l-.733,3.667,3.392,6.783h4.668l1.1-1.324ZM300.037,654.79a2.137,2.137,0,1,0-2.137-2.137A2.137,2.137,0,0,0,300.037,654.79Zm24.225,0a2.137,2.137,0,1,0-2.137-2.137A2.137,2.137,0,0,0,324.262,654.79Z" transform="translate(-295.998 -634.84)" fill="#28323a"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="34.298" height="13.328" viewBox="0 0 34.298 13.328">
<g id="car_10_" data-name="car (10)" transform="translate(-1.121 -15.731)">
<path id="Path_4736" data-name="Path 4736" d="M33.548,20.3a51.525,51.525,0,0,0-7.177-1.148c-.287-.072,0,0-4.378-2.656a3.75,3.75,0,0,0-1.507-.5c-4.952-.574-10.766-.431-14.714,2.656-.215.144-.359.287-.574.287l-2.3.718a1.486,1.486,0,0,0-.933.79,6.2,6.2,0,0,0-.646,4.665,1.627,1.627,0,0,0,1.22,1.22l.574.144c0-.215-.072-.359-.072-.574a4.665,4.665,0,0,1,9.331,0,4.236,4.236,0,0,1-.144,1H25.366a4.847,4.847,0,0,1-.144-1,4.665,4.665,0,1,1,9.331,0,3.5,3.5,0,0,1-.072.861,1.783,1.783,0,0,0,.933-1.579V22.958A2.522,2.522,0,0,0,33.548,20.3Zm-21.1-.072a.653.653,0,0,1-.574-.287L10.15,17.862a18.324,18.324,0,0,1,5.527-.79l.861,3.158Zm11.771-.072a.647.647,0,0,1-.359.072H18.045l-.861-3.086,3.015.215a2.339,2.339,0,0,1,.933.287L24.648,19.8Z" transform="translate(0)" fill="#28323a"/>
<circle id="Ellipse_234" data-name="Ellipse 234" cx="3.23" cy="3.23" r="3.23" transform="translate(4.479 22.599)" fill="#28323a"/>
<circle id="Ellipse_235" data-name="Ellipse 235" cx="3.23" cy="3.23" r="3.23" transform="translate(26.73 22.599)" fill="#28323a"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,5 @@
<svg id="golf-cart" xmlns="http://www.w3.org/2000/svg" width="33.26" height="25.5" viewBox="0 0 33.26 25.5">
<path id="Path_4733" data-name="Path 4733" d="M13.761,44.88A3.88,3.88,0,1,1,9.88,41,3.88,3.88,0,0,1,13.761,44.88Zm-2.217,0A1.663,1.663,0,1,0,9.88,46.543,1.663,1.663,0,0,0,11.543,44.88Z" transform="translate(17.282 -23.261)" fill="#28323a"/>
<path id="Path_4734" data-name="Path 4734" d="M50.761,44.88A3.88,3.88,0,1,1,46.88,41a3.88,3.88,0,0,1,3.88,3.88Zm-2.217,0a1.663,1.663,0,1,0-1.663,1.663,1.663,1.663,0,0,0,1.663-1.663Z" transform="translate(-40.228 -23.261)" fill="#28323a"/>
<path id="Path_4735" data-name="Path 4735" d="M34.152,30.619A4.989,4.989,0,0,0,27.5,25.891a4.939,4.939,0,0,0-3.326,4.728l-10.532.554h-.033a4.579,4.579,0,0,0,.033-.554,4.989,4.989,0,0,0-9.978,0,4.579,4.579,0,0,0,.033.554H2.554A7.207,7.207,0,0,1,2,29.51a.554.554,0,0,1,.554-.554V28.4c0-3.293,1.608-6.264,4.435-7V11.772A1.109,1.109,0,0,1,5.88,10.663v-.554A1.109,1.109,0,0,1,6.989,9h16.8a.948.948,0,0,1,.937.942v.887a.948.948,0,0,1-.937.942L29.467,22.11l.682.1a5.627,5.627,0,0,1,1.935.6,6.353,6.353,0,0,1,3.176,5.033A4.462,4.462,0,0,1,34.152,30.619Zm-6.536-8.775L22.084,11.772H9.206v9.241l1.109-.371V18.507a.882.882,0,0,1,1.763-.083l.349,3.88a1.253,1.253,0,0,0,1.214,1.109h1.48a1.663,1.663,0,0,1,1.619,1.325.87.87,0,0,1-.759,1.026l-1.84.244-.033.044.554,2.323h8.77l.033-.039-.222-3.98-3.3-3.3-.665.665a.557.557,0,1,1-.787-.787l2.118-2.112a.566.566,0,1,1,.793.809l-.665.665,2.422,2.422-.05-.887a.554.554,0,0,1,.6-.554Z" transform="translate(-2 -9)" fill="#28323a"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" width="34.141" height="21.621" viewBox="0 0 34.141 21.621">
<g id="transportation" transform="translate(-1.505 -12.69)">
<path id="Path_4726" data-name="Path 4726" d="M10.229,39.426h2.407a2.547,2.547,0,1,1,0-1.679H10.229a.84.84,0,0,0,0,1.679Z" transform="translate(-2.72 -10.278)" fill="#28323a"/>
<path id="Path_4727" data-name="Path 4727" d="M52.316,38.586A2.553,2.553,0,1,1,47.8,36.957a24.27,24.27,0,0,0,2.043,2.631.835.835,0,0,0,1.192.039.844.844,0,0,0,.034-1.187,21.472,21.472,0,0,1-1.819-2.351,2.557,2.557,0,0,1,3.062,2.5Z" transform="translate(-20.118 -10.278)" fill="#28323a"/>
<path id="Path_4728" data-name="Path 4728" d="M47.055,29.879a5.964,5.964,0,0,0-2.362.487c.521.963,1.041,1.808,1.517,2.519a3.023,3.023,0,0,1,.845-.118,3.12,3.12,0,1,1-2.278,1c-.481-.722-1-1.568-1.523-2.525a6,6,0,1,0,3.8-1.36Z" transform="translate(-17.411 -7.566)" fill="#28323a"/>
<path id="Path_4729" data-name="Path 4729" d="M46.7,18.615v1.9a.829.829,0,0,1-.549.784,6.81,6.81,0,0,1-2.4.375,29.7,29.7,0,0,1-1.31-3.695,4.115,4.115,0,0,1,3.874-.067.8.8,0,0,1,.386.7Z" transform="translate(-18.018 -2.096)" fill="#28323a"/>
<path id="Path_4730" data-name="Path 4730" d="M18.124,40.089a2.341,2.341,0,0,1,0,.56H12.01a.28.28,0,0,1,0-.56Z" transform="translate(-4.501 -12.06)" fill="#28323a"/>
<path id="Path_4731" data-name="Path 4731" d="M30.743,28.947a.274.274,0,0,1-.392-.011A31.887,31.887,0,0,1,25.43,21.2c-.778.308-3.393,1.719-3.2,6.751a.968.968,0,0,1-.4.834A6.2,6.2,0,0,1,18.2,29.854a10.271,10.271,0,0,1-3.952-.873q.034-.336.034-.672a6.563,6.563,0,0,0-6.751-6.55,1.08,1.08,0,0,0-.213-.537,1.191,1.191,0,0,0-.823-.442,10.752,10.752,0,0,1-4.036-.453.728.728,0,0,1-.28-1.181c1.215-1.22,2.973-1.763,5.693-1.763a4.7,4.7,0,0,1,2.967,1.142,9.953,9.953,0,0,1,.974,1.556.576.576,0,0,0,.493.28c.885.017,2.62,0,3.5-.017a.56.56,0,0,0,.532-.392,4.128,4.128,0,0,1,4.669-3.012c.481.084,1.993.336,2.491-.05a.448.448,0,0,0,.168-.3c-.291-.952-.549-1.948-.761-2.984a.442.442,0,0,0-.465-.353,4.793,4.793,0,0,0-2.911,1.288.287.287,0,0,1-.4,0,.28.28,0,0,1,0-.4A5.3,5.3,0,0,1,22.385,12.7a.988.988,0,0,1,1.069.795,36.988,36.988,0,0,0,7.3,15.059.28.28,0,0,1-.011.4Z" transform="translate(-0.208)" fill="#28323a"/>
<path id="Path_4732" data-name="Path 4732" d="M7.509,38.983a3.11,3.11,0,1,1,3-3.952h2.945a6,6,0,1,0,0,1.679H10.5a3.12,3.12,0,0,1-3,2.273Z" transform="translate(0 -7.562)" fill="#28323a"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@ -196,6 +196,11 @@ class MyAssets {
static String icPhoneNumber = "${assetPath}icons/ic_phone_number.svg";
static String icStar = "${assetPath}icons/ic_star.svg";
static String vehicleTypeBuggy = "${assetPath}icons/vehicle_type_buggy.svg";
static String vehicleTypeCar = "${assetPath}icons/vehicle_type_car.svg";
static String vehicleTypeGolfCart = "${assetPath}icons/vehicle_type_golf_cart.svg";
static String vehicleTypeMotorcycle = "${assetPath}icons/vehicle_type_motorcycle.svg";
//PNG
static String icWorldPng = "${assetPath}images/ic_world.png";
static String bnIntroPng = "${assetPath}images/bn_Intro.png";

@ -3,6 +3,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/utils/enums.dart';
extension EmailValidator on String {
Widget toText(
@ -246,3 +247,19 @@ extension DateTimeConversions on DateTime {
}
}
}
extension VehicleAdTypeEnum on int {
VehicleTypeEnum getVehicleTypeEnum() {
if (this == 1) {
return VehicleTypeEnum.car;
} else if (this == 2) {
return VehicleTypeEnum.motorCycle;
} else if (this == 3) {
return VehicleTypeEnum.golfCart;
} else if (this == 4) {
return VehicleTypeEnum.buggy;
} else {
return VehicleTypeEnum.car;
}
}
}

@ -1,5 +1,8 @@
import 'dart:developer';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/utils/enums.dart';
class VehicleDetailsModel {
List<VehicleBrandsModel>? vehicleBrands;
List<VehicleCategoryModel>? vehicleCategories;
@ -56,14 +59,22 @@ class VehicleTypeModel {
String? vehicleTypeName;
String? vehicleTypeNameN;
bool? isActive;
VehicleTypeModel({this.id, this.vehicleTypeName, this.vehicleTypeNameN, this.isActive});
VehicleTypeEnum? vehicleTypeEnum;
VehicleTypeModel({
this.id,
this.vehicleTypeName,
this.vehicleTypeNameN,
this.isActive,
this.vehicleTypeEnum = VehicleTypeEnum.car,
});
VehicleTypeModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
vehicleTypeName = json['vehicleTypeName'];
vehicleTypeNameN = json['vehicleTypeNameN'];
isActive = json['isActive'];
vehicleTypeEnum = (json['id'] as int).getVehicleTypeEnum();
}
Map<String, dynamic> toJson() {

@ -5,6 +5,14 @@
// unverified,
// }
enum VehicleTypeEnum {
car,
motorCycle,
golfCart,
buggy,
}
enum AdPostStatus {
pendingForReview,
pendingForPayment,

@ -24,26 +24,26 @@ class VehicleDetails extends StatelessWidget {
children: [
"Vehicle Detail".toText(fontSize: 18, isBold: true),
8.height,
Builder(
builder: (BuildContext context) {
List<DropValue> vehicleTypesDrop = [];
for (var element in adVM.vehicleTypes) {
vehicleTypesDrop.add(DropValue(element.id?.toInt() ?? 0, element.vehicleTypeName ?? "", ""));
}
return DropdownField(
(DropValue value) => adVM.updateSelectionVehicleTypeId(SelectionModel(selectedId: value.id, selectedOption: value.value, errorValue: "")),
list: vehicleTypesDrop,
dropdownValue: adVM.vehicleTypeId.selectedId != -1 ? DropValue(adVM.vehicleTypeId.selectedId, adVM.vehicleTypeId.selectedOption, "") : null,
errorValue: adVM.vehicleTypeId.errorValue,
hint: "Vehicle Type",
);
},
),
// Builder(
// builder: (BuildContext context) {
// List<DropValue> vehicleTypesDrop = [];
// for (var element in adVM.vehicleTypes) {
// vehicleTypesDrop.add(DropValue(element.id?.toInt() ?? 0, element.vehicleTypeName ?? "", ""));
// }
// return DropdownField(
// (DropValue value) => adVM.updateSelectionVehicleTypeId(SelectionModel(selectedId: value.id, selectedOption: value.value, errorValue: "")),
// list: vehicleTypesDrop,
// dropdownValue: adVM.vehicleTypeId.selectedId != -1 ? DropValue(adVM.vehicleTypeId.selectedId, adVM.vehicleTypeId.selectedOption, "") : null,
// errorValue: adVM.vehicleTypeId.errorValue,
// hint: "Vehicle Type",
// );
// },
// ),
if (adVM.vehicleTypeId.selectedId != -1) ...[
if (adVM.isFetchingLists) ...[
Row(
const Row(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
children: [
CircularProgressIndicator(),
],
).paddingAll(10),

@ -0,0 +1,89 @@
import 'package:flutter/material.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/models/advertisment_models/vehicle_details_models.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
class AdDurationSelectionSheetContent extends StatelessWidget {
//TODO: This will be updated when there is an API for the duration
final VehicleTypeModel vehicleType;
const AdDurationSelectionSheetContent({required this.vehicleType, super.key});
@override
Widget build(BuildContext context) {
return SizedBox(
height: MediaQuery.of(context).size.height / 1.2,
child: Column(
children: [
Row(
children: [
"Select Duration".toText(fontSize: 22, isBold: true).paddingOnly(top: 10, left: 21, right: 21),
],
),
Expanded(
child: ListView.separated(
shrinkWrap: true,
itemCount: 5,
itemBuilder: (BuildContext context, int index) {
return SizedBox(
width: double.infinity,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
"7 Days".toString().toText(fontSize: 16, isBold: true),
4.height,
"Your Ad will be active for 7 days and then you will need to extend it to keep it active. ".toText(
fontSize: 14,
color: MyColors.lightTextColor,
),
12.height,
"Ad Charges".toText(fontSize: 14, color: MyColors.lightTextColor, isBold: true),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
"300".toText(fontSize: 22, isBold: true),
2.width,
Padding(
padding: const EdgeInsets.only(bottom: 4),
child: "SAR".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true),
),
],
),
],
),
),
],
).toWhiteContainer(width: double.infinity, allPading: 12, isBorderRequired: index == 0 ? true : false),
);
},
separatorBuilder: (BuildContext context, int index) {
return 12.height;
},
padding: const EdgeInsets.all(20),
),
),
],
),
);
}
Widget showItem(String item, String value, {Color valueColor = Colors.black}) {
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
item.toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true),
4.width,
value.toText(fontSize: 12, color: valueColor, isBold: true),
],
);
}
}

@ -1,14 +1,18 @@
import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/models/advertisment_models/vehicle_details_models.dart';
import 'package:mc_common_app/models/widgets_models.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart';
import 'package:mc_common_app/views/advertisement/ad_duration_selection_sheet_content.dart';
import 'package:mc_common_app/widgets/bottom_sheet.dart';
import 'package:mc_common_app/widgets/common_widgets/app_bar.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart';
import 'package:sizer/sizer.dart';
class SelectAdTypeView extends StatelessWidget {
final bool isProvider;
@ -18,6 +22,22 @@ class SelectAdTypeView extends StatelessWidget {
this.isProvider = true,
}) : super(key: key);
Widget getVehicleAdTypeIcon(VehicleTypeEnum vehicleTypeEnum) {
switch (vehicleTypeEnum) {
case VehicleTypeEnum.car:
return MyAssets.vehicleTypeCar.buildSvg(height: 22);
case VehicleTypeEnum.motorCycle:
return MyAssets.vehicleTypeMotorcycle.buildSvg(height: 26);
case VehicleTypeEnum.golfCart:
return MyAssets.vehicleTypeGolfCart.buildSvg(height: 26);
case VehicleTypeEnum.buggy:
return MyAssets.vehicleTypeBuggy.buildSvg(height: 26);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
@ -35,42 +55,73 @@ class SelectAdTypeView extends StatelessWidget {
itemCount: adVM.vehicleTypes.length,
itemBuilder: (BuildContext context, int index) {
VehicleTypeModel vehicleTypeModel = adVM.vehicleTypes[index];
return SizedBox(
width: double.infinity,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
vehicleTypeModel.vehicleTypeName.toString().toText(fontSize: 16, isBold: true),
Row(
children: [
"Duration: ".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true),
"7 Days".toText(fontSize: 13, isBold: true),
const Icon(Icons.keyboard_arrow_down_sharp, color: MyColors.darkPrimaryColor, size: 20),
return InkWell(
onTap: () {
adVM.updateSelectionVehicleTypeId(
SelectionModel(selectedId: vehicleTypeModel.id!, selectedOption: vehicleTypeModel.vehicleTypeName ?? "", errorValue: ""),
);
Navigator.pushNamed(context, AppRoutes.createAdView);
},
child: SizedBox(
width: double.infinity,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
vehicleTypeModel.vehicleTypeName.toString().toText(fontSize: 18, isBold: true),
getVehicleAdTypeIcon(vehicleTypeModel.vehicleTypeEnum!),
],
),
if (isProvider) ...[
Row(
children: [
"Duration: ".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true),
"Valid Until Subscription Expiration".toText(fontSize: 13, isBold: true),
],
).paddingOnly(top: 5, bottom: 5),
] else ...[
InkWell(
onTap: () {
showMyBottomSheet(context, child: AdDurationSelectionSheetContent(vehicleType: vehicleTypeModel));
},
child: Row(
children: [
"Duration: ".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true),
"7 Days".toText(fontSize: 13, isBold: true),
const Icon(Icons.keyboard_arrow_down_sharp, color: MyColors.darkPrimaryColor, size: 20),
],
).paddingOnly(top: 5, bottom: 5),
),
],
).paddingOnly(top: 5, bottom: 5),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
"1056".toText(fontSize: 22, isBold: true),
2.width,
Padding(
padding: const EdgeInsets.only(bottom: 4),
child: "SAR".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true),
if (!isProvider) ...[
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
"1056".toText(fontSize: 22, isBold: true),
2.width,
Padding(
padding: const EdgeInsets.only(bottom: 4),
child: "SAR".toText(fontSize: 12, color: MyColors.lightTextColor, isBold: true),
),
],
),
],
),
],
],
),
),
),
],
),
).toWhiteContainer(width: double.infinity, allPading: 10);
],
),
).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.symmetric(horizontal: 20, vertical: 10)),
);
},
separatorBuilder: (BuildContext context, int index) {
return 9.height;
@ -80,40 +131,38 @@ class SelectAdTypeView extends StatelessWidget {
}),
),
if (isProvider) ...[
SizedBox(
height: 12.h,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
"5 of 10 ".toText(fontSize: 29, isBold: true, letterSpacing: 0, height: 1),
"Ads Remaining ".toText(fontSize: 17, color: MyColors.lightTextColor, isBold: true),
],
),
const Text.rich(
TextSpan(
children: [
"5 of 10 ".toText(fontSize: 29, isBold: true, letterSpacing: 0, height: 1),
"Ads Remaining ".toText(fontSize: 17, color: MyColors.lightTextColor, isBold: true),
TextSpan(
text: "You have left with 05 out of 50 ads given in the subscription. ",
style: TextStyle(
fontSize: 14,
color: MyColors.lightTextColor,
)),
TextSpan(
text: "Update Subscription",
style: TextStyle(
decoration: TextDecoration.underline,
fontSize: 14,
fontWeight: FontWeight.w600,
color: MyColors.darkPrimaryColor,
))
],
),
const Text.rich(
TextSpan(
children: [
TextSpan(
text: "You have left with 05 out of 50 ads given in the subscription. ",
style: TextStyle(
fontSize: 14,
color: MyColors.lightTextColor,
)),
TextSpan(
text: "Update Subscription",
style: TextStyle(
decoration: TextDecoration.underline,
fontSize: 14,
fontWeight: FontWeight.w600,
color: MyColors.darkPrimaryColor,
))
],
),
)
],
).toContainer(paddingAll: 20, backgroundColor: Colors.white),
),
),
10.height,
],
).toContainer(paddingAll: 20, backgroundColor: Colors.white),
]
],
),

@ -23,11 +23,12 @@ extension ExtendedText on Widget {
}
extension ContainerExt on Widget {
Widget toWhiteContainer({required double width, double? allPading, EdgeInsets? pading, EdgeInsets? margin, VoidCallback? onTap, Color? backgroundColor}) {
Widget toWhiteContainer({required double width, double? allPading, EdgeInsets? pading, EdgeInsets? margin, VoidCallback? onTap, Color? backgroundColor, bool isBorderRequired = false}) {
return InkWell(
onTap: onTap,
child: Container(
decoration: BoxDecoration(
border: isBorderRequired ? Border.all(color: MyColors.darkPrimaryColor, width: 2) : null,
color: backgroundColor ?? MyColors.white,
boxShadow: const [
BoxShadow(
@ -75,12 +76,12 @@ extension ContainerExt on Widget {
boxShadow: !isShadowEnabled
? null
: [
BoxShadow(
color: const Color(0xff000000).withOpacity(.05),
blurRadius: 26,
offset: const Offset(0, -3),
),
],
BoxShadow(
color: const Color(0xff000000).withOpacity(.05),
blurRadius: 26,
offset: const Offset(0, -3),
),
],
),
padding: padding ?? EdgeInsets.all(paddingAll),
margin: margin ?? EdgeInsets.all(marginAll),
@ -354,5 +355,3 @@ extension LocaleSetup on MultiProvider {
extension WidgetExtensions on Widget {
Widget onPress(VoidCallback onTap) => InkWell(onTap: onTap, child: this);
}

Loading…
Cancel
Save