|
|
|
import 'package:dio/dio.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
|
|
|
import 'package:huixiang/generated/l10n.dart';
|
|
|
|
import 'package:huixiang/retrofit/data/base_data.dart';
|
|
|
|
import 'package:huixiang/retrofit/data/order_info.dart';
|
|
|
|
import 'package:huixiang/retrofit/retrofit_api.dart';
|
|
|
|
import 'package:huixiang/utils/flutter_utils.dart';
|
|
|
|
import 'package:huixiang/view_widget/border_text.dart';
|
|
|
|
import 'package:huixiang/view_widget/custom_image.dart';
|
|
|
|
import 'package:huixiang/view_widget/icon_text.dart';
|
|
|
|
import 'package:huixiang/view_widget/my_appbar.dart';
|
|
|
|
import 'package:huixiang/view_widget/round_button.dart';
|
|
|
|
import 'package:huixiang/view_widget/separator.dart';
|
|
|
|
import 'package:huixiang/view_widget/text_image_dialog.dart';
|
|
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
import 'package:url_launcher/url_launcher.dart';
|
|
|
|
|
|
|
|
class OrderDetailPage extends StatefulWidget {
|
|
|
|
final arguments;
|
|
|
|
|
|
|
|
OrderDetailPage({this.arguments});
|
|
|
|
|
|
|
|
@override
|
|
|
|
State<StatefulWidget> createState() {
|
|
|
|
return _OrderDetailPage();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class _OrderDetailPage extends State<OrderDetailPage> {
|
|
|
|
ApiService apiService;
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
|
|
|
|
SharedPreferences.getInstance().then((value) {
|
|
|
|
apiService =
|
|
|
|
ApiService(Dio(), context: context, token: value.getString("token"));
|
|
|
|
queryDetails();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
OrderInfo orderInfo;
|
|
|
|
int payStatus = 0;
|
|
|
|
int orderStatus = 0;
|
|
|
|
int sendStatus = 0;
|
|
|
|
int isTakeOut = 0;
|
|
|
|
int refundStatus = 0;
|
|
|
|
|
|
|
|
// String storeType = "NORMALSTORE"; //NORMALSTORE FASTSTORE RETAILSTORE
|
|
|
|
|
|
|
|
queryDetails() async {
|
|
|
|
BaseData<OrderInfo> baseData =
|
|
|
|
await apiService.orderDetail(widget.arguments["id"]);
|
|
|
|
if (baseData != null && baseData.isSuccess) {
|
|
|
|
orderInfo = baseData.data;
|
|
|
|
payStatus = orderInfo.payStatus;
|
|
|
|
orderStatus = orderInfo.orderStatus;
|
|
|
|
sendStatus = orderInfo.sendStatus;
|
|
|
|
isTakeOut = orderInfo.isTakeOut;
|
|
|
|
refundStatus = orderInfo.refundStatus;
|
|
|
|
// storeType = orderInfo.storeVO.posType.code;
|
|
|
|
print("refund_status: $refundStatus");
|
|
|
|
print("payStatus: $payStatus");
|
|
|
|
print("orderStatus: $orderStatus");
|
|
|
|
print("sendStatus: $sendStatus");
|
|
|
|
print("isTakeOut: $isTakeOut");
|
|
|
|
if (mounted)
|
|
|
|
setState(() {
|
|
|
|
statusTitle();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return Scaffold(
|
|
|
|
appBar: MyAppBar(
|
|
|
|
title: title ?? S.of(context).jinxingzhongdedingdan,
|
|
|
|
titleColor: Colors.white,
|
|
|
|
background: Color(0xFF3A405A),
|
|
|
|
leadingColor: Colors.white,
|
|
|
|
toolbarHeight: (orderStatus >= 4 ? 118.h : 118.h) +
|
|
|
|
MediaQuery.of(context).padding.top +
|
|
|
|
kToolbarHeight,
|
|
|
|
brightness: Brightness.dark,
|
|
|
|
bottom: PreferredSize(
|
|
|
|
preferredSize: Size(double.infinity, orderStatus >= 4 ? 118.h : 118),
|
|
|
|
child: Container(
|
|
|
|
color: Color(0xFF3A405A),
|
|
|
|
height: orderStatus >= 4 ? 118.h : 118.h,
|
|
|
|
padding: EdgeInsets.fromLTRB(16.w, 0, 16.w, 10.h),
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
Visibility(
|
|
|
|
visible: center != null && center != "",
|
|
|
|
child: Container(
|
|
|
|
child: IconText(
|
|
|
|
(center != null && center != "") ? center : "",
|
|
|
|
leftImage: "assets/image/icon_order_ok.png",
|
|
|
|
iconSize: 40.w,
|
|
|
|
textStyle: TextStyle(
|
|
|
|
fontSize: 24.sp,
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
color: Colors.white,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Expanded(
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.end,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.end,
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
RoundButton(
|
|
|
|
text: isTakeOut == 0
|
|
|
|
? S.of(context).ziqu
|
|
|
|
: isTakeOut == 1
|
|
|
|
? S.of(context).waimai
|
|
|
|
: S.of(context).kuaidi,
|
|
|
|
width: 42.w * AppUtils.textScale(context),
|
|
|
|
height: 20.h * AppUtils.textScale(context),
|
|
|
|
textColor: Colors.white,
|
|
|
|
fontSize: 12.sp,
|
|
|
|
padding: EdgeInsets.fromLTRB(8.w, 1.h, 8.w, 1.h),
|
|
|
|
backgroup: Color(0xFF32A060),
|
|
|
|
radius: 15.w,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
title,
|
|
|
|
style: TextStyle(
|
|
|
|
color: Colors.white,
|
|
|
|
fontSize: 12.sp,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
Visibility(
|
|
|
|
child: Container(
|
|
|
|
height: 33.h,
|
|
|
|
child: Row(
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
children: timeWidget(),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
visible: (orderStatus >= 4 || isTakeOut == 2)
|
|
|
|
? false
|
|
|
|
: (isTakeOut == 0)
|
|
|
|
? !(payStatus == 1)
|
|
|
|
: (isTakeOut == 1)
|
|
|
|
? !(payStatus == 1 &&
|
|
|
|
(sendStatus != 2 && sendStatus != 3))
|
|
|
|
: !(payStatus == 1 && (sendStatus != 1)),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
body: Container(
|
|
|
|
child:
|
|
|
|
/*Column(
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child:*/
|
|
|
|
Stack(
|
|
|
|
children: [
|
|
|
|
Positioned(
|
|
|
|
top: 0,
|
|
|
|
left: 0,
|
|
|
|
right: 0,
|
|
|
|
child: Container(
|
|
|
|
height: 36.h,
|
|
|
|
color: Color(0xFF3A405A),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SingleChildScrollView(
|
|
|
|
physics: BouncingScrollPhysics(),
|
|
|
|
child: Container(
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
buildAddress(),
|
|
|
|
buildCommodity(),
|
|
|
|
// if (payStatus == 0) couponRemarks(),
|
|
|
|
/*(payStatus == 0) ? paySelector() : */
|
|
|
|
buildOrderInfo(),
|
|
|
|
Container(
|
|
|
|
height: 42.h,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
// flex: 1,
|
|
|
|
// ),
|
|
|
|
// if (payStatus == 0)
|
|
|
|
// bottomPay(),
|
|
|
|
// ],
|
|
|
|
// ),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
List<Widget> timeWidget() {
|
|
|
|
if (orderInfo == null) return [];
|
|
|
|
String hour = "";
|
|
|
|
String minute = "";
|
|
|
|
if (payStatus == 0) {
|
|
|
|
String hourMinute = AppUtils.getHourMinuteAfter30mByString(
|
|
|
|
(orderInfo != null) ? orderInfo.createTime : "");
|
|
|
|
var hourMinutes = hourMinute.split(":");
|
|
|
|
hour = hourMinutes[0];
|
|
|
|
minute = hourMinutes[1];
|
|
|
|
} else {
|
|
|
|
if (isTakeOut == 0) {
|
|
|
|
} else if (isTakeOut == 1) {
|
|
|
|
if (sendStatus == 2 || sendStatus == 3) {
|
|
|
|
String hourMinute = AppUtils.getHourMinuteByString(
|
|
|
|
(orderInfo != null && orderInfo.orderDetail != null)
|
|
|
|
? orderInfo.orderDetail.predictTime
|
|
|
|
: "");
|
|
|
|
var hourMinutes = hourMinute.split(":");
|
|
|
|
hour = hourMinutes[0];
|
|
|
|
minute = hourMinutes[1];
|
|
|
|
}
|
|
|
|
} else if (isTakeOut == 2) {
|
|
|
|
// if (sendStatus == 1) {
|
|
|
|
// String hourMinute = AppUtils.getHourMinuteByString(
|
|
|
|
// (orderInfo != null && orderInfo.orderDetail != null)
|
|
|
|
// ? orderInfo.orderDetail.predictTime
|
|
|
|
// : "");
|
|
|
|
// var hourMinutes = hourMinute.split(":");
|
|
|
|
// hour = hourMinutes[0];
|
|
|
|
// minute = hourMinutes[1];
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return [
|
|
|
|
AspectRatio(
|
|
|
|
aspectRatio: 1,
|
|
|
|
child: BorderText(
|
|
|
|
text: hour,
|
|
|
|
textColor: Colors.white,
|
|
|
|
fontSize: 21.sp,
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
borderColor: Colors.white,
|
|
|
|
borderWidth: 1,
|
|
|
|
padding: EdgeInsets.all(2),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 8.w,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
":",
|
|
|
|
style: TextStyle(
|
|
|
|
color: Colors.white,
|
|
|
|
fontSize: 21.sp,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 8.w,
|
|
|
|
),
|
|
|
|
AspectRatio(
|
|
|
|
aspectRatio: 1,
|
|
|
|
child: BorderText(
|
|
|
|
text: minute,
|
|
|
|
textColor: Colors.white,
|
|
|
|
fontSize: 21.sp,
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
borderColor: Colors.white,
|
|
|
|
borderWidth: 1,
|
|
|
|
padding: EdgeInsets.all(2),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
String title = "";
|
|
|
|
String center = "";
|
|
|
|
|
|
|
|
statusTitle() {
|
|
|
|
if (isTakeOut == 0) {
|
|
|
|
if (payStatus == 0) {
|
|
|
|
title = S.of(context).dingdandaizhifu;
|
|
|
|
} else {
|
|
|
|
title = S.of(context).dingdanyizhifu;
|
|
|
|
switch (orderStatus) {
|
|
|
|
case 2:
|
|
|
|
title = S.of(context).shangjiazhengzaipeican;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
title = S.of(context).dengdaiyonghuqucan;
|
|
|
|
center = S.of(context).qudanhao(orderInfo.dayFlowCode);
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
title = S.of(context).dingdanyiwancheng;
|
|
|
|
center = S.of(context).dingdanyiwancheng;
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
title = S.of(context).yiquxiao;
|
|
|
|
center = S.of(context).yiquxiao;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (isTakeOut == 1) {
|
|
|
|
if (payStatus == 0) {
|
|
|
|
title = S.of(context).dingdandaizhifu;
|
|
|
|
} else {
|
|
|
|
title = S.of(context).dengdaishangjiaqueren;
|
|
|
|
if (orderStatus < 4) {
|
|
|
|
switch (sendStatus) {
|
|
|
|
case 1:
|
|
|
|
title = S.of(context).zhengzaihujiaoqishou;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
title = S.of(context).qishouyijiedanquhuozhong;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
title = S.of(context).qishoupeisongzhongyujisongdashijian;
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
title = S.of(context).dingdanyisongda;
|
|
|
|
center = S.of(context).dingdanyisongda;
|
|
|
|
switch (orderStatus) {
|
|
|
|
case 4:
|
|
|
|
title = S.of(context).dingdanyiwancheng;
|
|
|
|
center = S.of(context).dingdanyiwancheng;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} else if (orderStatus == 4) {
|
|
|
|
title = S.of(context).dingdanyiwancheng;
|
|
|
|
center = S.of(context).dingdanyiwancheng;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (isTakeOut == 2) {
|
|
|
|
if (payStatus == 0) {
|
|
|
|
title = S.of(context).dingdandaizhifu;
|
|
|
|
} else {
|
|
|
|
title = S.of(context).dingdandaifahuo;
|
|
|
|
if (orderStatus < 4) {
|
|
|
|
switch (sendStatus) {
|
|
|
|
case 1:
|
|
|
|
title = S.of(context).shangjiayifahuo;
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
title = S.of(context).huopinyisongda;
|
|
|
|
center = S.of(context).huopinyisongda;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} else if (orderStatus == 4) {
|
|
|
|
title = S.of(context).dingdanyiwancheng;
|
|
|
|
center = S.of(context).dingdanyiwancheng;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (orderStatus == 5) {
|
|
|
|
title = S.of(context).yiquxiao;
|
|
|
|
center = S.of(context).yiquxiao;
|
|
|
|
}
|
|
|
|
if (refundStatus == 1) {
|
|
|
|
title = S.of(context).dingdanyituikuan;
|
|
|
|
center = S.of(context).dingdanyituikuan;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget couponRemarks() {
|
|
|
|
return Container(
|
|
|
|
margin: EdgeInsets.only(left: 16.w, right: 16.w, top: 8.h, bottom: 2.h),
|
|
|
|
padding: EdgeInsets.all(20),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Colors.white,
|
|
|
|
boxShadow: [
|
|
|
|
BoxShadow(
|
|
|
|
color: Colors.black.withAlpha(12),
|
|
|
|
offset: Offset(0, 3),
|
|
|
|
blurRadius: 14,
|
|
|
|
spreadRadius: 0,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
borderRadius: BorderRadius.circular(8),
|
|
|
|
),
|
|
|
|
child: Column(
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
orderInfoItem(S.of(context).youhuiquan, "暂无可用优惠券"),
|
|
|
|
orderInfoItem(S.of(context).beizhu, "口味、面包硬度等"),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget bottomPay() {
|
|
|
|
return Container(
|
|
|
|
height: 54.h,
|
|
|
|
color: Colors.white,
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.end,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.baseline,
|
|
|
|
textBaseline: TextBaseline.alphabetic,
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
S.of(context).heji,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 12.sp,
|
|
|
|
color: Colors.black,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
S
|
|
|
|
.of(context)
|
|
|
|
.yuan_(orderInfo != null ? orderInfo.finalPayPrice : "0"),
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 20.sp,
|
|
|
|
color: Color(0xFF32A060),
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 16.w,
|
|
|
|
),
|
|
|
|
InkWell(
|
|
|
|
onTap: () {},
|
|
|
|
child: Container(
|
|
|
|
alignment: Alignment.center,
|
|
|
|
color: Color(0xFF32A060),
|
|
|
|
padding: EdgeInsets.symmetric(horizontal: 36.w),
|
|
|
|
child: Text(
|
|
|
|
S.of(context).jiesuan,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 16.sp,
|
|
|
|
color: Colors.white,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
carryOnPay() async {
|
|
|
|
showDialog(
|
|
|
|
context: context,
|
|
|
|
builder: (context) {
|
|
|
|
return AlertDialog(
|
|
|
|
content: Container(
|
|
|
|
width: MediaQuery.of(context).size.width - 84.w,
|
|
|
|
height: 120.h,
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
"app暂不支持支付,\n请前往对应小程序处理",
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 16.sp,
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
color: Colors.black,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
height: 30.h,
|
|
|
|
),
|
|
|
|
Row(
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: InkWell(
|
|
|
|
child: BorderText(
|
|
|
|
text: "取消",
|
|
|
|
textColor: Color(0xFF32A060),
|
|
|
|
fontSize: 16.sp,
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
borderColor: Color(0xFF32A060),
|
|
|
|
radius: 4,
|
|
|
|
padding: EdgeInsets.all(12),
|
|
|
|
borderWidth: 1,
|
|
|
|
),
|
|
|
|
onTap: () {
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
},
|
|
|
|
),
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 16.w,
|
|
|
|
),
|
|
|
|
Expanded(
|
|
|
|
child: InkWell(
|
|
|
|
child: RoundButton(
|
|
|
|
text: "好的",
|
|
|
|
textColor: Colors.white,
|
|
|
|
radius: 4,
|
|
|
|
padding: EdgeInsets.all(12),
|
|
|
|
backgroup: Color(0xFF32A060),
|
|
|
|
fontSize: 16.sp,
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
),
|
|
|
|
onTap: () {
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
},
|
|
|
|
),
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget paySelector() {
|
|
|
|
return Container(
|
|
|
|
margin: EdgeInsets.only(left: 16.w, right: 16.w, top: 14.h, bottom: 2.h),
|
|
|
|
padding: EdgeInsets.all(20),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Colors.white,
|
|
|
|
boxShadow: [
|
|
|
|
BoxShadow(
|
|
|
|
color: Colors.black.withAlpha(12),
|
|
|
|
offset: Offset(0, 3),
|
|
|
|
blurRadius: 14,
|
|
|
|
spreadRadius: 0,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
borderRadius: BorderRadius.circular(8),
|
|
|
|
),
|
|
|
|
child: Column(
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
S.of(context).zhifufangshi,
|
|
|
|
style: TextStyle(
|
|
|
|
color: Color(0xFF727272),
|
|
|
|
fontSize: 12.sp,
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
height: 20.h,
|
|
|
|
),
|
|
|
|
Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
checkView(0),
|
|
|
|
// Image.asset("assets/image/icon_alipay.png"),
|
|
|
|
Text(
|
|
|
|
S.of(context).yue,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 12.sp,
|
|
|
|
color: Color(0xff353535),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
height: 20.h,
|
|
|
|
),
|
|
|
|
Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
checkView(1),
|
|
|
|
IconText(
|
|
|
|
S.of(context).weixinzhifu,
|
|
|
|
leftImage: "assets/image/icon_we_chat.png",
|
|
|
|
iconSize: 14.w,
|
|
|
|
space: 8.w,
|
|
|
|
textStyle: TextStyle(
|
|
|
|
fontSize: 12.sp,
|
|
|
|
color: Color(0xFF353535),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
var checkIndex = 0;
|
|
|
|
|
|
|
|
Widget checkView(var index) {
|
|
|
|
return GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
setState(() {
|
|
|
|
checkIndex = index;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
padding: EdgeInsets.only(right: 16),
|
|
|
|
alignment: Alignment.center,
|
|
|
|
child: Image.asset(
|
|
|
|
checkIndex != index
|
|
|
|
? "assets/image/icon_radio_unselected.png"
|
|
|
|
: "assets/image/icon_radio_selected.png",
|
|
|
|
width: 15,
|
|
|
|
height: 15,
|
|
|
|
)),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget buildAddress() {
|
|
|
|
return Container(
|
|
|
|
margin: EdgeInsets.only(left: 16.w, right: 16.w, top: 20.h, bottom: 2.h),
|
|
|
|
padding: EdgeInsets.all(20),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Colors.white,
|
|
|
|
boxShadow: [
|
|
|
|
BoxShadow(
|
|
|
|
color: Colors.black.withAlpha(12),
|
|
|
|
offset: Offset(0, 3),
|
|
|
|
blurRadius: 14,
|
|
|
|
spreadRadius: 0,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
borderRadius: BorderRadius.circular(8),
|
|
|
|
),
|
|
|
|
child: Column(
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
Row(
|
|
|
|
children: [
|
|
|
|
Image.asset(
|
|
|
|
"assets/image/icon_location_address.png",
|
|
|
|
width: 28.w,
|
|
|
|
height: 28.h,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
(orderInfo != null && orderInfo.addressExt != null)
|
|
|
|
? (orderInfo.addressExt.recName ?? "")
|
|
|
|
: "",
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF4C4C4C),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 12.w,
|
|
|
|
),
|
|
|
|
Expanded(
|
|
|
|
child: Text(
|
|
|
|
(orderInfo != null && orderInfo.addressExt != null)
|
|
|
|
? (orderInfo.addressExt.recMobile ?? "")
|
|
|
|
: "",
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF4C4C4C),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Icon(
|
|
|
|
Icons.keyboard_arrow_right,
|
|
|
|
size: 16,
|
|
|
|
color: Colors.black,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.only(left: 28.w),
|
|
|
|
child: Text(
|
|
|
|
(orderInfo != null && orderInfo.addressExt != null)
|
|
|
|
? (orderInfo.addressExt.address ?? "")
|
|
|
|
: "",
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 10.sp,
|
|
|
|
color: Color(0xFFA29E9E),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Visibility(
|
|
|
|
visible: orderStatus < 5 && refundStatus == 0,
|
|
|
|
child: Container(
|
|
|
|
margin: EdgeInsets.only(top: 20.h, bottom: 16.h),
|
|
|
|
child: MySeparator(
|
|
|
|
width: 5.w,
|
|
|
|
height: 1.h,
|
|
|
|
color: Color(0xFFA29E9E),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Visibility(
|
|
|
|
visible: orderStatus < 5 && refundStatus == 0,
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
if (payStatus == 0) {
|
|
|
|
orderCancel();
|
|
|
|
} else if (payStatus < 4) {
|
|
|
|
SmartDialog.show(
|
|
|
|
widget: TextImageWidget(
|
|
|
|
"assets/image/icon_empty.png",
|
|
|
|
S.of(context).ruxutuikuanqingyumendianlianxi,
|
|
|
|
"",
|
|
|
|
S.of(context).zhidianmendian,
|
|
|
|
(open) {
|
|
|
|
if (open) {
|
|
|
|
String mobile = (orderInfo != null &&
|
|
|
|
orderInfo.storeVO != null)
|
|
|
|
? (orderInfo.storeVO.mobile ?? "")
|
|
|
|
: "";
|
|
|
|
if (mobile != "") {
|
|
|
|
callMobile(mobile);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
SmartDialog.dismiss();
|
|
|
|
},
|
|
|
|
leftText: S.of(context).quxiao,
|
|
|
|
width: MediaQuery.of(context).size.width - 30.w,
|
|
|
|
heightRatioWithWidth: 0.9,
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
padding: EdgeInsets.all(5),
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
Image.asset(
|
|
|
|
payStatus == 0
|
|
|
|
? "assets/image/icon_order_cancel.png"
|
|
|
|
: "assets/image/icon_request_refund.png",
|
|
|
|
width: 24.w,
|
|
|
|
height: 24.h,
|
|
|
|
fit: BoxFit.contain,
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
height: 8.h,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
payStatus == 0
|
|
|
|
? S.of(context).quxiaodingdan
|
|
|
|
: S.of(context).shenqingtuikuan,
|
|
|
|
style: TextStyle(
|
|
|
|
color: Color(0xFF353535),
|
|
|
|
fontSize: 12.sp,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
if (payStatus == 0) {
|
|
|
|
carryOnPay();
|
|
|
|
} else {
|
|
|
|
String storeId =
|
|
|
|
(orderInfo != null && orderInfo.storeVO != null)
|
|
|
|
? (orderInfo.storeVO.id ?? "")
|
|
|
|
: "";
|
|
|
|
String storeName =
|
|
|
|
(orderInfo != null && orderInfo.storeVO != null)
|
|
|
|
? (orderInfo.storeVO.storeName ?? "")
|
|
|
|
: "";
|
|
|
|
aginOrder(storeId, storeName);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
padding: EdgeInsets.all(5),
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
Image.asset(
|
|
|
|
payStatus == 0
|
|
|
|
? "assets/image/icon_order_renminbi.png"
|
|
|
|
: "assets/image/icon_order_agin.png",
|
|
|
|
width: 24.w,
|
|
|
|
height: 24.h,
|
|
|
|
fit: BoxFit.contain,
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
height: 8.h,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
payStatus == 0
|
|
|
|
? S.of(context).jixuzhifu
|
|
|
|
: S.of(context).zailaiyidan,
|
|
|
|
style: TextStyle(
|
|
|
|
color: Color(0xFF32A060),
|
|
|
|
fontSize: 12.sp,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
callMobile(mobile) async {
|
|
|
|
String url = "tel:$mobile";
|
|
|
|
if (await canLaunch(url)) {
|
|
|
|
await launch(url);
|
|
|
|
} else {
|
|
|
|
throw 'Could not launch $url';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
orderCancel() async {
|
|
|
|
BaseData baseData = await apiService.orderCancel(widget.arguments["id"]);
|
|
|
|
if (baseData != null && baseData.isSuccess) {
|
|
|
|
SmartDialog.showToast("订单取消成功");
|
|
|
|
Future.delayed(Duration(milliseconds: 300), () {
|
|
|
|
queryDetails();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
aginOrder(storeId, storeName) {
|
|
|
|
Navigator.of(context).pushNamed('/router/union_detail_page',
|
|
|
|
arguments: {"id": storeId, "storeName": storeName});
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget buildCommodity() {
|
|
|
|
return Stack(
|
|
|
|
alignment: Alignment.centerRight,
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.only(
|
|
|
|
left: 16.w,
|
|
|
|
right: 16.w,
|
|
|
|
top: 16.h,
|
|
|
|
bottom: 8.h,
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
left: 20.w,
|
|
|
|
right: 20.w,
|
|
|
|
top: 12.h,
|
|
|
|
bottom: 12.h,
|
|
|
|
),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Colors.white,
|
|
|
|
boxShadow: [
|
|
|
|
BoxShadow(
|
|
|
|
color: Colors.black.withAlpha(12),
|
|
|
|
offset: Offset(0, 1),
|
|
|
|
blurRadius: 12,
|
|
|
|
spreadRadius: 0,
|
|
|
|
)
|
|
|
|
],
|
|
|
|
borderRadius: BorderRadius.circular(8),
|
|
|
|
),
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
|
|
children: commodityList(),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Visibility(
|
|
|
|
child: buildQrCode(),
|
|
|
|
visible: false,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
List<Widget> commodityList() {
|
|
|
|
if (orderInfo == null) return [];
|
|
|
|
List<Widget> widgets = [];
|
|
|
|
if (orderInfo.productList != null) {
|
|
|
|
widgets
|
|
|
|
.addAll(orderInfo.productList.map((e) => commodityItem(e)).toList());
|
|
|
|
}
|
|
|
|
widgets.add(SizedBox(height: 20.h));
|
|
|
|
|
|
|
|
if (orderInfo.isTakeOut != 0) {
|
|
|
|
// 配送费
|
|
|
|
widgets.add(discountItem(
|
|
|
|
Color(0xFFFF7A1A),
|
|
|
|
orderInfo.isTakeOut == 1
|
|
|
|
? S.of(context).peisongfei
|
|
|
|
: S.of(context).yunfei,
|
|
|
|
"",
|
|
|
|
"+${orderInfo.postFee}"));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (orderInfo.orderDetail != null &&
|
|
|
|
orderInfo.orderDetail.couponDTO != null) {
|
|
|
|
// 配送费
|
|
|
|
widgets.add(discountItem(
|
|
|
|
Color(0xFF32A060),
|
|
|
|
S.of(context).youhuiquan,
|
|
|
|
orderInfo.orderDetail.couponDTO.name,
|
|
|
|
orderInfo.orderDetail.couponDTO.money));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (orderInfo.storeVO != null && orderInfo.storeVO.couponVO != null) {
|
|
|
|
// widgets.add(discountItem(Color(0xFF32A060),
|
|
|
|
// orderInfo.storeVO.couponVO.storeName,
|
|
|
|
// S.of(context).huodongjianmianpeisongfei(orderInfo.storeVO.couponVO.discountAmount),
|
|
|
|
// orderInfo.storeVO.couponVO.f));
|
|
|
|
// Color(0xFFFF7A1A)
|
|
|
|
}
|
|
|
|
widgets.add(Container(
|
|
|
|
margin: EdgeInsets.only(
|
|
|
|
top: 24.h,
|
|
|
|
bottom: 4.h,
|
|
|
|
),
|
|
|
|
child: MySeparator(
|
|
|
|
height: 1,
|
|
|
|
width: 5.w,
|
|
|
|
color: Colors.grey,
|
|
|
|
),
|
|
|
|
));
|
|
|
|
widgets.add(buildTotalPrice());
|
|
|
|
return widgets;
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget buildQrCode() {
|
|
|
|
return Container(
|
|
|
|
margin: EdgeInsets.only(right: 16.w),
|
|
|
|
child: Stack(
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
width: 94.w,
|
|
|
|
height: 33.h,
|
|
|
|
margin: EdgeInsets.only(left: 12.w),
|
|
|
|
padding: EdgeInsets.only(left: 16.w),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Colors.white,
|
|
|
|
boxShadow: [
|
|
|
|
BoxShadow(
|
|
|
|
color: Colors.black.withAlpha(25),
|
|
|
|
offset: Offset(0, 1),
|
|
|
|
blurRadius: 12,
|
|
|
|
spreadRadius: 0,
|
|
|
|
)
|
|
|
|
],
|
|
|
|
borderRadius: BorderRadius.only(
|
|
|
|
topLeft: Radius.circular(2),
|
|
|
|
bottomLeft: Radius.circular(2),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
S.of(context).qujianma,
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
fontSize: 12.sp,
|
|
|
|
color: Colors.black,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Icon(
|
|
|
|
Icons.keyboard_arrow_right,
|
|
|
|
color: Colors.black,
|
|
|
|
size: 16,
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.only(top: 6.h, bottom: 6.h),
|
|
|
|
// padding: EdgeInsets.all(2),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Colors.white,
|
|
|
|
boxShadow: [
|
|
|
|
BoxShadow(
|
|
|
|
color: Colors.black.withAlpha(25),
|
|
|
|
offset: Offset(0, 1),
|
|
|
|
blurRadius: 12,
|
|
|
|
spreadRadius: 0,
|
|
|
|
)
|
|
|
|
],
|
|
|
|
borderRadius: BorderRadius.circular(2),
|
|
|
|
),
|
|
|
|
child: Icon(
|
|
|
|
Icons.qr_code,
|
|
|
|
size: 20,
|
|
|
|
color: Color(0xFF32A060),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget buildOrderInfo() {
|
|
|
|
return Container(
|
|
|
|
margin: EdgeInsets.only(left: 16.w, right: 16.w, top: 8.h, bottom: 8.h),
|
|
|
|
padding:
|
|
|
|
EdgeInsets.only(left: 20.w, right: 20.w, top: 12.h, bottom: 12.h),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Colors.white,
|
|
|
|
boxShadow: [
|
|
|
|
BoxShadow(
|
|
|
|
color: Colors.black.withAlpha(12),
|
|
|
|
offset: Offset(0, 1),
|
|
|
|
blurRadius: 12,
|
|
|
|
spreadRadius: 0,
|
|
|
|
)
|
|
|
|
],
|
|
|
|
borderRadius: BorderRadius.circular(8),
|
|
|
|
),
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
orderInfoItem(
|
|
|
|
S.of(context).dingdanhao, orderInfo != null ? orderInfo.id : ""),
|
|
|
|
orderInfoItem(S.of(context).xiadanshijian,
|
|
|
|
orderInfo != null ? orderInfo.createTime : ""),
|
|
|
|
// orderInfoItem(S.of(context).peisongfangshi, orderInfo != null ? orderInfo.createTime : ""),
|
|
|
|
orderInfoItem(
|
|
|
|
S.of(context).beizhu,
|
|
|
|
orderInfo != null
|
|
|
|
? orderInfo.notes ?? S.of(context).qingshurubeizhuyaoqiu
|
|
|
|
: S.of(context).qingshurubeizhuyaoqiu),
|
|
|
|
orderInfoItem(S.of(context).zhifufangshi,
|
|
|
|
orderInfo != null ? payChannel() : S.of(context).yue),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
String payChannel() {
|
|
|
|
switch (orderInfo.payChannel) {
|
|
|
|
case 0:
|
|
|
|
return "现金支付";
|
|
|
|
case 1:
|
|
|
|
return "微信支付";
|
|
|
|
case 2:
|
|
|
|
return "支付宝支付";
|
|
|
|
case 3:
|
|
|
|
return "商户会员余额支付";
|
|
|
|
case 4:
|
|
|
|
return "平台会员余额支付";
|
|
|
|
case 5:
|
|
|
|
return "美团买单";
|
|
|
|
case 6:
|
|
|
|
return "饿了么支付";
|
|
|
|
case 7:
|
|
|
|
return "扫呗支付";
|
|
|
|
case 8:
|
|
|
|
return "微生活";
|
|
|
|
case 9:
|
|
|
|
return "银联支付";
|
|
|
|
}
|
|
|
|
return S.of(context).yue;
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget orderInfoItem(leftText, rightText) {
|
|
|
|
return Container(
|
|
|
|
margin: EdgeInsets.only(top: 8.h, bottom: 8.h),
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
leftText,
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
fontSize: 12.sp,
|
|
|
|
color: Color(0xFF727272),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Expanded(
|
|
|
|
child: Text(
|
|
|
|
rightText,
|
|
|
|
textAlign: TextAlign.end,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 12.sp,
|
|
|
|
color: Color(0xFF353535),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
// SizedBox(
|
|
|
|
// width: 16.w,
|
|
|
|
// ),
|
|
|
|
// Icon(
|
|
|
|
// Icons.keyboard_arrow_right,
|
|
|
|
// size: 16,
|
|
|
|
// color: Colors.black,
|
|
|
|
// )
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget commodityItem(ProductList productList) {
|
|
|
|
return Container(
|
|
|
|
margin: EdgeInsets.only(top: 8.h, bottom: 8.h),
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
MImage(
|
|
|
|
productList.skuImg,
|
|
|
|
width: 44.w,
|
|
|
|
height: 44,
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
errorSrc: "assets/image/default_1.png",
|
|
|
|
fadeSrc: "assets/image/default_1.png",
|
|
|
|
),
|
|
|
|
Expanded(
|
|
|
|
flex: 1,
|
|
|
|
child: Container(
|
|
|
|
margin: EdgeInsets.only(
|
|
|
|
left: 16.w,
|
|
|
|
),
|
|
|
|
height: 44.h,
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Text(
|
|
|
|
productList.productName,
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF353535),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"x${productList.buyNum}",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 12.sp,
|
|
|
|
color: Color(0xFF727272),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
flex: 1,
|
|
|
|
child: Text(
|
|
|
|
productList.weight != null
|
|
|
|
? "${productList.weight}kg"
|
|
|
|
: "",
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 12.sp,
|
|
|
|
color: Color(0xFFA29E9E),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
S.of(context).yuan_(productList.sellPrice),
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
fontSize: 12.sp,
|
|
|
|
color: Color(0xFF4C4C4C),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget discountItem(Color color, textName, condition, amount) {
|
|
|
|
return Container(
|
|
|
|
margin: EdgeInsets.only(top: 9.h, bottom: 9.h),
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
padding: EdgeInsets.fromLTRB(4.w, 2.h, 4.w, 2.h),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
borderRadius: BorderRadius.all(Radius.circular(2)),
|
|
|
|
border: Border.all(
|
|
|
|
width: 1,
|
|
|
|
color: color,
|
|
|
|
style: BorderStyle.solid,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
child: Text(
|
|
|
|
textName,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 10.sp,
|
|
|
|
color: color,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 27.w,
|
|
|
|
),
|
|
|
|
Expanded(
|
|
|
|
child: Text(
|
|
|
|
condition ?? "",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 10.sp,
|
|
|
|
color: Color(0xFFA29E9E),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
S.of(context).yuan_("$amount"),
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 12.sp,
|
|
|
|
color: color,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget buildTotalPrice() {
|
|
|
|
return Container(
|
|
|
|
margin: EdgeInsets.only(top: 7.h, bottom: 11.h),
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.end,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.baseline,
|
|
|
|
textBaseline: TextBaseline.alphabetic,
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: Text(
|
|
|
|
S.of(context).gongjijianshangpin(
|
|
|
|
(orderInfo != null && orderInfo.productList != null)
|
|
|
|
? orderInfo.productList.length
|
|
|
|
: "0"),
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 10.sp,
|
|
|
|
color: Color(0xFFA29E9E),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
child: Text(
|
|
|
|
S.of(context).jiesuanjine,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 10.sp,
|
|
|
|
color: Color(0xFF353535),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 5.w,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
totalPrice(),
|
|
|
|
textAlign: TextAlign.end,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 30.sp,
|
|
|
|
color: Color(0xFF32A060),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
String totalPrice() {
|
|
|
|
if (orderInfo == null) return "";
|
|
|
|
double totalPrice = (double.tryParse(orderInfo.orderSum) +
|
|
|
|
double.tryParse(orderInfo.postFee));
|
|
|
|
if (orderInfo.orderDetail != null &&
|
|
|
|
orderInfo.orderDetail.couponDTO != null) {
|
|
|
|
totalPrice -= double.tryParse(orderInfo.orderDetail.couponDTO.money);
|
|
|
|
}
|
|
|
|
return "$totalPrice";
|
|
|
|
}
|
|
|
|
}
|