You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
car_customer_app/lib/views/advertisement/create_ad_view.dart

219 lines
6.6 KiB
Dart

import 'package:car_customer_app/main.dart';
import 'package:car_customer_app/view_models/ad_view_model.dart';
import 'package:car_customer_app/views/advertisement/create_ad_progress_steps.dart';
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/enums.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/dropdown/dropdow_field.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:provider/provider.dart';
import 'package:mc_common_app/widgets/common_widgets/dotted_rect.dart';
class CreateAdView extends StatelessWidget {
CreateAdView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: CustomAppBar(
title: "Create Ad",
isRemoveBackButton: false,
isDrawerEnabled: false,
),
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
CreateAdProgressSteps(),
22.height,
//TODO: Need to add a Widget Builder here, based on the Enums
VehicleDetails().toWhiteContainer(width: double.infinity, allPading: 12, margin: EdgeInsets.symmetric(horizontal: 21, vertical: 10)),
10.height,
SizedBox(
width: double.infinity,
child: ShowFillButton(
title: "Next",
onPressed: () {
context.read<AdVM>().updateCurrentStep(AdCreationStepsEnum.damageParts);
},
)),
10.height,
],
),
),
);
}
}
class VehicleDetails extends StatelessWidget {
const VehicleDetails({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
List<DropValue> dropList = [
DropValue(0, "Maintenance", ""),
DropValue(1, "Car Wash", ""),
DropValue(2, "Monthly Checkup", ""),
DropValue(3, "Friendly Visit", ""),
DropValue(4, "Muftaa", ""),
];
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
"Vehicle Detail".toText(fontSize: 18, isBold: true),
8.height,
DropdownField(
(DropValue value) {},
list: dropList,
hint: "Vehicle Type",
),
8.height,
DropdownField(
(DropValue value) {},
list: dropList,
hint: "Vehicle Model",
),
8.height,
DropdownField(
(DropValue value) {},
list: dropList,
hint: "Vehicle Model Year",
),
8.height,
DropdownField(
(DropValue value) {},
list: dropList,
hint: "Vehicle Color",
),
8.height,
DropdownField(
(DropValue value) {},
list: dropList,
hint: "Vehicle Condition",
),
8.height,
DropdownField(
(DropValue value) {},
list: dropList,
hint: "Vehicle Category",
),
8.height,
TxtField(
hint: "Vehicle Mileage",
// onChanged: (v) => email = v,
),
8.height,
DropdownField(
(DropValue value) {},
list: dropList,
hint: "Vehicle Transmission",
),
8.height,
DropdownField(
(DropValue value) {},
list: dropList,
hint: "Vehicle Seller Type",
),
8.height,
DropdownField(
(DropValue value) {},
list: dropList,
hint: "Vehicle Country",
),
8.height,
DropdownField(
(DropValue value) {},
list: dropList,
hint: "Vehicle City",
),
8.height,
TxtField(
hint: "Demand Amount",
// onChanged: (v) => email = v,
),
8.height,
TxtField(
hint: "Vehicle VIN",
// onChanged: (v) => email = v,
),
8.height,
TxtField(
hint: "Vehicle Title",
// onChanged: (v) => email = v,
),
8.height,
TxtField(
hint: "Warranty Available (No. of Years)",
// onChanged: (v) => email = v,
),
8.height,
TxtField(
hint: "Vehicle Description",
maxLines: 5,
// onChanged: (v) => email = v,
),
22.height,
"Finance Available".toText(fontSize: 16),
8.height,
Consumer(builder: (BuildContext context, AdVM adVm, Widget? child) {
return Container(
width: 65,
height: 37,
decoration: BoxDecoration(
color: adVm.financeAvailableStatus ? MyColors.darkPrimaryColor : MyColors.white,
borderRadius: BorderRadius.circular(25.0),
border: Border.all(color: MyColors.black, width: 1.5),
),
child: CupertinoSwitch(
activeColor: MyColors.darkPrimaryColor,
trackColor: MyColors.white,
thumbColor: MyColors.grey98Color,
value: adVm.financeAvailableStatus,
onChanged: (value) {
adVm.updateFinanceAvailableStatus(value);
},
),
);
}),
28.height,
"Vehicle Pictures".toText(fontSize: 18, isBold: true),
8.height,
InkWell(
onTap: () {
context.read<AdVM>().pickImageFromPhone(1);
},
child: Container(
height: 46,
width: double.infinity,
color: MyColors.white,
child: DashedRect(
color: MyColors.lightIconColor,
strokeWidth: 2.0,
gap: 4.0,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
MyAssets.attachmentIcon.buildSvg(),
"Attach Image".toText(
fontSize: 15,
isBold: true,
color: MyColors.darkPrimaryColor,
),
],
),
),
),
),
20.height,
],
);
}
}