|
|
|
import 'dart:convert';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
import 'package:huixiang/data/min_order_info.dart';
|
|
|
|
import 'package:huixiang/data/settle_order_info.dart';
|
|
|
|
import 'package:huixiang/generated/l10n.dart';
|
|
|
|
import 'package:huixiang/utils/font_weight.dart';
|
|
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
|
|
|
|
class PayMethod extends StatefulWidget {
|
|
|
|
final Function(int payChannel) payChannelCheck;
|
|
|
|
final String coupons;
|
|
|
|
final String promotions;
|
|
|
|
final bool useVipPriceSelect;
|
|
|
|
final SettleOrderInfo? settleOrderInfo;
|
|
|
|
final bool useBenefitSelect;
|
|
|
|
final int tableId;
|
|
|
|
final MinOrderInfo? minOrderInfo;
|
|
|
|
|
|
|
|
PayMethod(this.payChannelCheck,this.coupons,this.promotions,this.useVipPriceSelect,this.settleOrderInfo,this.useBenefitSelect,this.tableId,this.minOrderInfo);
|
|
|
|
|
|
|
|
@override
|
|
|
|
State<StatefulWidget> createState() {
|
|
|
|
return _PayMethod();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class _PayMethod extends State<PayMethod> {
|
|
|
|
String money = "0";
|
|
|
|
String balance = "0";
|
|
|
|
String mGreenMoney = "0";
|
|
|
|
String mRaiseMoney = "0";
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
checkIndex = ((widget.minOrderInfo != null) ? (widget.minOrderInfo?.isRaise??false) : (widget.settleOrderInfo?.isRaise ?? false)) ? 4:5;
|
|
|
|
SharedPreferences.getInstance().then((value) {
|
|
|
|
if (value.getString("minMember")?.isNotEmpty ?? false) {
|
|
|
|
Map<String, dynamic> memberInfo = jsonDecode(value.getString("minMember")!);
|
|
|
|
balance = memberInfo["balance"];
|
|
|
|
money = memberInfo["money"];
|
|
|
|
mGreenMoney = memberInfo["greenMoney"];
|
|
|
|
mRaiseMoney = memberInfo["raiseMoney"];
|
|
|
|
setState(() {});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return Container(
|
|
|
|
width: double.infinity,
|
|
|
|
margin: EdgeInsets.only(
|
|
|
|
left: 16.w,
|
|
|
|
right: 16.w,
|
|
|
|
top: 8.h,
|
|
|
|
bottom: 16.h,
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
left: 16.w,
|
|
|
|
right: 16.w,
|
|
|
|
top: 20.h,
|
|
|
|
bottom: 20.h,
|
|
|
|
),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
boxShadow: [
|
|
|
|
BoxShadow(
|
|
|
|
color: Color(0x000000).withAlpha(25),
|
|
|
|
offset: Offset(0, 2),
|
|
|
|
blurRadius: 3,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
color: Colors.white,
|
|
|
|
borderRadius: BorderRadius.circular(8),
|
|
|
|
),
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(bottom: 16.h),
|
|
|
|
child: Text(
|
|
|
|
S.of(context).zhifufangshi,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 16.sp,
|
|
|
|
color: Colors.black,
|
|
|
|
fontWeight: MyFontWeight.regular,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if(widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false))
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
double m = double.parse(money);
|
|
|
|
if (m == null) {
|
|
|
|
m = 0;
|
|
|
|
}
|
|
|
|
double orderSum = double.parse(widget.settleOrderInfo?.orderSum ?? '0');
|
|
|
|
if (orderSum == null) {
|
|
|
|
orderSum = 0;
|
|
|
|
}
|
|
|
|
if (orderSum > m) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
setState(() {
|
|
|
|
checkIndex = 1;
|
|
|
|
});
|
|
|
|
widget.payChannelCheck(4);
|
|
|
|
},
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
checkView(1, isHide: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(money) ?? 0)),
|
|
|
|
Expanded(
|
|
|
|
child: Container(),
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"¥$money",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontFamily: 'JDZhengHT',
|
|
|
|
color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(money) ?? 0) ? Color(0x66353535) : Color(0xff353535),
|
|
|
|
fontWeight: MyFontWeight.medium,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 10,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
S.of(context).huixiangqianbao,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(money) ?? 0) ? Color(0x66353535) : Color(0xff353535),
|
|
|
|
fontWeight: MyFontWeight.semi_bold,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if(widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false))
|
|
|
|
SizedBox(
|
|
|
|
height: 10,
|
|
|
|
),
|
|
|
|
if(widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false))
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
double balanceMoney = double.parse(balance);
|
|
|
|
if (balanceMoney == null) {
|
|
|
|
balanceMoney = 0;
|
|
|
|
}
|
|
|
|
double orderSum = double.parse(widget.settleOrderInfo?.orderSum ?? '0');
|
|
|
|
if (orderSum == null) {
|
|
|
|
orderSum = 0;
|
|
|
|
}
|
|
|
|
if (orderSum > balanceMoney) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
setState(() {
|
|
|
|
checkIndex = 2;
|
|
|
|
});
|
|
|
|
widget.payChannelCheck(3);
|
|
|
|
},
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
checkView(2, isHide: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(balance) ?? 0)),
|
|
|
|
Expanded(
|
|
|
|
child: Container(),
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"¥$balance",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontFamily: 'JDZhengHT',
|
|
|
|
color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(balance) ?? 0) ? Color(0x66353535) : Color(0xff353535),
|
|
|
|
fontWeight: MyFontWeight.medium,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 10,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
S.of(context).mendianyue,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(balance) ?? 0) ? Color(0x66353535) : Color(0xff353535),
|
|
|
|
fontWeight: MyFontWeight.semi_bold,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if(widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false))
|
|
|
|
SizedBox(
|
|
|
|
height: 10,
|
|
|
|
),
|
|
|
|
if(mGreenMoney!="0.00" && (widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false)))
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
double greenMoney = double.parse(mGreenMoney);
|
|
|
|
if (greenMoney == null) {
|
|
|
|
greenMoney = 0;
|
|
|
|
}
|
|
|
|
double orderSum = double.parse(widget.settleOrderInfo?.orderSum ?? '0');
|
|
|
|
if (orderSum == null) {
|
|
|
|
orderSum = 0;
|
|
|
|
}
|
|
|
|
if (orderSum > greenMoney) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
setState(() {
|
|
|
|
checkIndex = 3;
|
|
|
|
// if(widget.promotions != "" || widget.coupons != "" || widget.useVipPriceSelect || widget.useBenefitSelect){
|
|
|
|
// print("discount-promotions: ${widget.promotions}");
|
|
|
|
// print("discount-coupons: ${widget.coupons}");
|
|
|
|
// print("discount-useVipPriceSelect: ${widget.useVipPriceSelect}");
|
|
|
|
// print("discount-useBenefitSelect: ${widget.useBenefitSelect}");
|
|
|
|
// SmartDialog.show(
|
|
|
|
// widget: SettlementTips(
|
|
|
|
// () {
|
|
|
|
// },
|
|
|
|
// text: "绿币支付不参与任何活动优惠,请重新选择支付方式",
|
|
|
|
// ));
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
});
|
|
|
|
print("discount-payChannelCheck: 5");
|
|
|
|
widget.payChannelCheck(5);
|
|
|
|
},
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
checkView(3, isHide: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mGreenMoney) ?? 0)),
|
|
|
|
Spacer(flex: 1,),
|
|
|
|
Text(
|
|
|
|
"¥$mGreenMoney",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontFamily: 'JDZhengHT',
|
|
|
|
color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mGreenMoney) ?? 0) ? Color(0x66353535) : Color(0xff353535),
|
|
|
|
fontWeight: MyFontWeight.medium,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 10,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
S.of(context).lvbizhifu,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mGreenMoney) ?? 0) ? Color(0x66353535) : Color(0xff353535),
|
|
|
|
fontWeight: MyFontWeight.semi_bold,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if(mGreenMoney != "0.00" && (widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false)))
|
|
|
|
SizedBox(
|
|
|
|
height: 10,
|
|
|
|
),
|
|
|
|
if(mRaiseMoney != "0" && (widget.tableId > 0 ? (widget?.minOrderInfo?.isRaise ?? false) : (widget?.settleOrderInfo?.isRaise ?? false)))
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
double raiseMoney = double.parse(mRaiseMoney);
|
|
|
|
if (raiseMoney == null) {
|
|
|
|
raiseMoney = 0;
|
|
|
|
}
|
|
|
|
double orderSum = double.parse(widget.settleOrderInfo?.orderSum ?? '0');
|
|
|
|
if (orderSum == null) {
|
|
|
|
orderSum = 0;
|
|
|
|
}
|
|
|
|
if (orderSum > raiseMoney) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
setState(() {
|
|
|
|
checkIndex = 4;
|
|
|
|
// if(widget.promotions != "" || widget.coupons != "" || widget.useVipPriceSelect || widget.useBenefitSelect){
|
|
|
|
// SmartDialog.show(
|
|
|
|
// widget: SettlementTips(
|
|
|
|
// () {},
|
|
|
|
// text: "助农积分不参与任何活动优惠,请重新选择支付方式",
|
|
|
|
// ),
|
|
|
|
// );
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
});
|
|
|
|
widget.payChannelCheck(7);
|
|
|
|
},
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
checkView(4, isHide: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mRaiseMoney) ?? 0)),
|
|
|
|
Spacer(
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"¥$mRaiseMoney",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontFamily: 'JDZhengHT',
|
|
|
|
color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mRaiseMoney) ?? 0) ? Color(0x66353535) : Color(0xff353535),
|
|
|
|
fontWeight: MyFontWeight.medium,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 10,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
S.of(context).zhunongjifen,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: (double.parse(widget.settleOrderInfo?.orderSum ?? '0') ?? 0) > (double.parse(mRaiseMoney) ?? 0) ? Color(0x66353535) : Color(0xff353535),
|
|
|
|
fontWeight: MyFontWeight.semi_bold,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if(mRaiseMoney !="0" && (widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false)))
|
|
|
|
|
|
|
|
if(widget.tableId > 0 ? !(widget?.minOrderInfo?.isRaise ?? false) : !(widget?.settleOrderInfo?.isRaise ?? false))
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
setState(() {
|
|
|
|
checkIndex = 5;
|
|
|
|
widget.payChannelCheck(1);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
checkView(5),
|
|
|
|
Spacer(),
|
|
|
|
Image.asset("assets/image/icon_we_chat.webp"),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(left: 8.w),
|
|
|
|
child: Text(
|
|
|
|
S.of(context).weixinzhifu,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xff353535),
|
|
|
|
fontWeight: MyFontWeight.semi_bold,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
var checkIndex = 5;
|
|
|
|
|
|
|
|
Widget checkView(var index, {bool isHide = false}) {
|
|
|
|
|
|
|
|
if (isHide) {
|
|
|
|
return Container(
|
|
|
|
padding: EdgeInsets.only(right:36.w),
|
|
|
|
alignment: Alignment.center,
|
|
|
|
child: Image.asset(
|
|
|
|
"assets/image/disenable_seletor.png",
|
|
|
|
width: 15.w,
|
|
|
|
height: 15.h,
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
return Container(
|
|
|
|
padding: EdgeInsets.only(right:36.w),
|
|
|
|
alignment: Alignment.center,
|
|
|
|
child: Image.asset(
|
|
|
|
checkIndex != index
|
|
|
|
? "assets/image/icon_radio_unselected.webp"
|
|
|
|
: "assets/image/icon_radio_selected.webp",
|
|
|
|
width: 15.w,
|
|
|
|
height: 15.h,
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|