|
|
|
@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/classes/colors.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/classes/date_uitl.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
|
|
|
|
@ -11,6 +12,7 @@ import 'package:mohem_flutter_app/models/items_for_sale/get_items_for_sale_list.
|
|
|
|
|
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/widgets/circular_avatar.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart';
|
|
|
|
|
import 'package:url_launcher/url_launcher.dart';
|
|
|
|
|
|
|
|
|
|
class ItemForSaleDetailPage extends StatefulWidget {
|
|
|
|
@ -26,113 +28,86 @@ class _ItemForSaleDetailPageState extends State<ItemForSaleDetailPage> {
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
getItemsForSaleList = ModalRoute.of(context)?.settings.arguments as GetItemsForSaleList;
|
|
|
|
|
|
|
|
|
|
return Scaffold(
|
|
|
|
|
backgroundColor: Colors.white,
|
|
|
|
|
appBar: AppBarWidget(context, title: LocaleKeys.itemsForSale.tr(), showHomeButton: true),
|
|
|
|
|
body: SingleChildScrollView(
|
|
|
|
|
child: Column(
|
|
|
|
|
children: [
|
|
|
|
|
AspectRatio(
|
|
|
|
|
aspectRatio: 336 / 554,
|
|
|
|
|
child: Container(
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
color: Colors.white,
|
|
|
|
|
borderRadius: BorderRadius.circular(10),
|
|
|
|
|
boxShadow: [
|
|
|
|
|
BoxShadow(
|
|
|
|
|
color: const Color(0xff000000).withOpacity(.05),
|
|
|
|
|
blurRadius: 26,
|
|
|
|
|
offset: const Offset(0, -3),
|
|
|
|
|
body: Column(
|
|
|
|
|
children: [
|
|
|
|
|
ListView(
|
|
|
|
|
padding: const EdgeInsets.all(21),
|
|
|
|
|
children: [
|
|
|
|
|
Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
|
children: [
|
|
|
|
|
Hero(
|
|
|
|
|
tag: "ItemImage" + getItemsForSaleList.itemSaleID.toString(),
|
|
|
|
|
transitionOnUserGestures: true,
|
|
|
|
|
child: AspectRatio(
|
|
|
|
|
aspectRatio: 322 / 261,
|
|
|
|
|
child: ClipRRect(
|
|
|
|
|
borderRadius: BorderRadius.circular(6),
|
|
|
|
|
child: Image.memory(
|
|
|
|
|
base64Decode(getItemsForSaleList.itemAttachments![0].content!),
|
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
// color: Colors.red,
|
|
|
|
|
child: Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
|
children: [
|
|
|
|
|
Container(
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
boxShadow: [
|
|
|
|
|
BoxShadow(
|
|
|
|
|
color: const Color(0xffEBEBEB).withOpacity(1.0),
|
|
|
|
|
blurRadius: 26,
|
|
|
|
|
offset: const Offset(0, -3),
|
|
|
|
|
).paddingAll(8),
|
|
|
|
|
Column(
|
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
children: [
|
|
|
|
|
getItemsForSaleList.title!.toText20(),
|
|
|
|
|
getItemsForSaleList.description!.toText12(maxLine: 5, color: MyColors.grey57Color),
|
|
|
|
|
21.height,
|
|
|
|
|
getItemsForSaleList.status!.toText16(color: getItemsForSaleList.status == 'Approved' ? MyColors.greenColor : MyColors.yellowColor),
|
|
|
|
|
"${getItemsForSaleList.quotePrice} ${getItemsForSaleList.currencyCode!}".toText20(isBold: true),
|
|
|
|
|
1.divider.paddingOnly(top: 16, bottom: 16),
|
|
|
|
|
Row(
|
|
|
|
|
children: [
|
|
|
|
|
CircularAvatar(
|
|
|
|
|
url: getItemsForSaleList.profilePicture,
|
|
|
|
|
height: 34,
|
|
|
|
|
width: 34,
|
|
|
|
|
),
|
|
|
|
|
7.width,
|
|
|
|
|
Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
|
children: [getItemsForSaleList.fullName!.toText14(), ItemDetailView("Posted on", DateUtil.formatDateToDate(DateTime.parse(getItemsForSaleList.created!), false))],
|
|
|
|
|
).expanded,
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
child: Hero(
|
|
|
|
|
tag: "ItemImage" + getItemsForSaleList.itemSaleID.toString(),
|
|
|
|
|
transitionOnUserGestures: true,
|
|
|
|
|
child: AspectRatio(
|
|
|
|
|
aspectRatio: 148 / 127,
|
|
|
|
|
child: ClipRRect(
|
|
|
|
|
borderRadius: BorderRadius.circular(6),
|
|
|
|
|
child: Image.memory(
|
|
|
|
|
base64Decode(getItemsForSaleList.itemAttachments![0].content!),
|
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
).paddingAll(8),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
getItemsForSaleList.title!.toText20(isBold: true, color: const Color(0xff2B353E)).paddingOnly(left: 21, right: 21),
|
|
|
|
|
getItemsForSaleList.description!.toText12(maxLine: 5, color: const Color(0xff535353)).paddingOnly(left: 21, right: 21, bottom: 21),
|
|
|
|
|
getItemsForSaleList.status!.toText16(isBold: true, color: getItemsForSaleList.status == 'Approved' ? MyColors.greenColor : MyColors.yellowColor).paddingOnly(left: 21, right: 21),
|
|
|
|
|
"${getItemsForSaleList.quotePrice} ${getItemsForSaleList.currencyCode!}".toText20(isBold: true).paddingOnly(left: 21, right: 21, bottom: 15),
|
|
|
|
|
const Divider().paddingOnly(left: 21, right: 21),
|
|
|
|
|
Row(
|
|
|
|
|
children: [
|
|
|
|
|
CircularAvatar(
|
|
|
|
|
height: 40,
|
|
|
|
|
width: 40,
|
|
|
|
|
).paddingOnly(left: 21, top: 21),
|
|
|
|
|
Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
|
children: [
|
|
|
|
|
getItemsForSaleList.fullName!.toText14(isBold: true).paddingOnly(left: 7, right: 7),
|
|
|
|
|
"Posted on: ${DateUtil.formatDateToDate(DateTime.parse(getItemsForSaleList.created!), false)}".toText12().paddingOnly(left: 7, right: 7),
|
|
|
|
|
],
|
|
|
|
|
).paddingOnly(top: 18),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
).paddingAll(21),
|
|
|
|
|
),
|
|
|
|
|
Container(
|
|
|
|
|
decoration: const BoxDecoration(
|
|
|
|
|
color: MyColors.white,
|
|
|
|
|
boxShadow: [
|
|
|
|
|
BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 1),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
child: Row(
|
|
|
|
|
children: [
|
|
|
|
|
DefaultButton("Email", () async {
|
|
|
|
|
Uri emailLaunchUri = Uri(
|
|
|
|
|
scheme: 'mailto',
|
|
|
|
|
path: getItemsForSaleList.emailAddress,
|
|
|
|
|
);
|
|
|
|
|
launchUrl(emailLaunchUri);
|
|
|
|
|
}, iconData: Icons.email_sharp, isTextExpanded: false)
|
|
|
|
|
.insideContainer
|
|
|
|
|
.expanded,
|
|
|
|
|
DefaultButton("Call", () async {
|
|
|
|
|
Uri callLaunchUri = Uri(
|
|
|
|
|
scheme: 'tel',
|
|
|
|
|
path: getItemsForSaleList.mobileNumber,
|
|
|
|
|
);
|
|
|
|
|
launchUrl(callLaunchUri);
|
|
|
|
|
}, iconData: Icons.call_sharp, isTextExpanded: false)
|
|
|
|
|
.insideContainer
|
|
|
|
|
.expanded,
|
|
|
|
|
],
|
|
|
|
|
).paddingOnly(right: 16, left: 16, top: 6, bottom: 16)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
).objectContainerView(disablePadding: true),
|
|
|
|
|
],
|
|
|
|
|
).expanded,
|
|
|
|
|
Row(
|
|
|
|
|
children: [
|
|
|
|
|
DefaultButton("Email", () async {
|
|
|
|
|
Uri emailLaunchUri = Uri(
|
|
|
|
|
scheme: 'mailto',
|
|
|
|
|
path: getItemsForSaleList.emailAddress,
|
|
|
|
|
);
|
|
|
|
|
launchUrl(emailLaunchUri);
|
|
|
|
|
}, iconData: Icons.email_sharp, isTextExpanded: false)
|
|
|
|
|
.expanded,
|
|
|
|
|
8.width,
|
|
|
|
|
DefaultButton("Call", () async {
|
|
|
|
|
Uri callLaunchUri = Uri(
|
|
|
|
|
scheme: 'tel',
|
|
|
|
|
path: getItemsForSaleList.mobileNumber,
|
|
|
|
|
);
|
|
|
|
|
launchUrl(callLaunchUri);
|
|
|
|
|
}, iconData: Icons.call_sharp, isTextExpanded: false)
|
|
|
|
|
.expanded,
|
|
|
|
|
],
|
|
|
|
|
).insideContainer,
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|