Browse Source

safety

master
fmk 3 years ago
parent
commit
389f589d84
  1. 3
      lib/home/huixiang_view/huixiang_banner.dart
  2. 5
      lib/integral/integral_page.dart
  3. 66
      lib/integral/intergra_view/integral_task.dart
  4. 3
      lib/mine/mine_view/mine_view.dart
  5. 34
      lib/mine/mine_wallet_page.dart
  6. 996
      lib/order/order_detail_page.dart
  7. 330
      lib/order/order_view/order_address.dart
  8. 378
      lib/order/order_view/order_commodity.dart
  9. 119
      lib/order/order_view/order_info.dart
  10. 198
      lib/order/order_view/order_status.dart
  11. 2
      lib/union/union_details_page.dart
  12. 2
      lib/view_widget/receive_success.dart

3
lib/home/huixiang_view/huixiang_banner.dart

@ -65,9 +65,6 @@ class _HuiXiangBanner extends State<HuiXiangBanner> {
/// contentType 0123 /// contentType 0123
bannerClick(BannerData bannerData) async { bannerClick(BannerData bannerData) async {
switch (bannerData.contentType) { switch (bannerData.contentType) {
case 0:
Navigator.of(context).pushNamed('/router/qr_share');
break;
case 1: case 1:
Navigator.of(context).pushNamed('/router/integral_store_page', Navigator.of(context).pushNamed('/router/integral_store_page',
arguments: {"goodsId": bannerData.content}); arguments: {"goodsId": bannerData.content});

5
lib/integral/integral_page.dart

@ -1,5 +1,4 @@
import 'dart:convert'; import 'dart:convert';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart';
@ -46,8 +45,8 @@ class _IntegralPage extends State<IntegralPage> {
); );
userInfo = UserInfo.fromJson(jsonDecode(value.getString("user"))); userInfo = UserInfo.fromJson(jsonDecode(value.getString("user")));
BaseData<List<Rank>> rankData = BaseData<List<Rank>> rankData = await apiService.rankList()
await apiService.rankList().catchError((onError) {}); .catchError((onError) {});
if (rankData != null && rankData.isSuccess) { if (rankData != null && rankData.isSuccess) {
ranks.clear(); ranks.clear();
ranks.addAll(rankData.data); ranks.addAll(rankData.data);

66
lib/integral/intergra_view/integral_task.dart

@ -6,6 +6,7 @@ import 'package:huixiang/retrofit/data/sign_info.dart';
import 'package:huixiang/retrofit/data/task.dart'; import 'package:huixiang/retrofit/data/task.dart';
import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/utils/font_weight.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:huixiang/view_widget/icon_text.dart';
import 'package:huixiang/view_widget/round_button.dart'; import 'package:huixiang/view_widget/round_button.dart';
class IntegralTask extends StatefulWidget { class IntegralTask extends StatefulWidget {
@ -60,7 +61,7 @@ class _IntegralTask extends State<IntegralTask> {
Expanded( Expanded(
child: Container( child: Container(
child: ListView.builder( child: ListView.builder(
padding: EdgeInsets.only(left: 10.w, top: 20.h), padding: EdgeInsets.only(left: 10.w, top: 20.h),
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
// loop: false, // loop: false,
// pagination: SwiperPagination( // pagination: SwiperPagination(
@ -79,8 +80,8 @@ class _IntegralTask extends State<IntegralTask> {
itemCount: (widget.signInfo != null && itemCount: (widget.signInfo != null &&
widget.signInfo.taskList != null && widget.signInfo.taskList != null &&
widget.signInfo.taskList.length > 0) widget.signInfo.taskList.length > 0)
? widget.signInfo.taskList.length : 0 ? widget.signInfo.taskList.length
), : 0),
), ),
flex: 1, flex: 1,
) )
@ -182,21 +183,50 @@ class _IntegralTask extends State<IntegralTask> {
], ],
), ),
), ),
RoundButton( task.limitDay == (task.complateNum ?? task.conplateNum)
text: task.limitDay == (task.complateNum ?? task.conplateNum) ? RoundButton(
? S.of(context).yiwancheng text: task.limitDay == (task.complateNum ?? task.conplateNum)
: S.of(context).quwancheng, ? S.of(context).yiwancheng
textColor: task.limitDay == (task.complateNum ?? task.conplateNum) : S.of(context).quwancheng,
? Color(0xFF808080) textColor:
: Colors.white, task.limitDay == (task.complateNum ?? task.conplateNum)
backgroup: task.limitDay == (task.complateNum ?? task.conplateNum) ? Color(0xFF808080)
? Color(0xFFF5F6FA) : Colors.white,
: Color(0xFF32A060), backgroup:
radius: 12.w, task.limitDay == (task.complateNum ?? task.conplateNum)
fontSize: 12.sp, ? Color(0xFFF5F6FA)
fontWeight: MyFontWeight.semi_bold, : Color(0xFF32A060),
padding: EdgeInsets.symmetric(vertical: 4.h, horizontal: 12.w), radius: 12.w,
), fontSize: 12.sp,
fontWeight: MyFontWeight.semi_bold,
padding: EdgeInsets.symmetric(
vertical: 4.h,
horizontal: 15.w,
),
)
: RoundButton(
text: "x10",
textColor:
task.limitDay == (task.complateNum ?? task.conplateNum)
? Color(0xFF808080)
: Colors.white,
backgroup:
task.limitDay == (task.complateNum ?? task.conplateNum)
? Color(0xFFF5F6FA)
: Color(0xFF32A060),
icons: Image.asset(
"assets/image/icon_gold_coin.png",
width: 16,
height: 16,
),
radius: 12.w,
fontSize: 12.sp,
fontWeight: MyFontWeight.semi_bold,
padding: EdgeInsets.symmetric(
vertical: 4.h,
horizontal: 14.w,
),
),
], ],
), ),
); );

3
lib/mine/mine_view/mine_view.dart

@ -23,6 +23,7 @@ class MineView extends StatefulWidget {
} }
class _MineView extends State<MineView> { class _MineView extends State<MineView> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Column( return Column(
@ -35,7 +36,7 @@ class _MineView extends State<MineView> {
children: [ children: [
InkWell( InkWell(
onTap: () { onTap: () {
toScan(); // toScan();
}, },
child: Container( child: Container(
padding: EdgeInsets.all(8.h), padding: EdgeInsets.all(8.h),

34
lib/mine/mine_wallet_page.dart

@ -260,17 +260,19 @@ class _MineWalletPage extends State<MineWalletPage> {
padding: EdgeInsets.fromLTRB(24.w, 24.h, 24.w, 24.h), padding: EdgeInsets.fromLTRB(24.w, 24.h, 24.w, 24.h),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(8)), borderRadius: BorderRadius.circular(8),
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: Colors.black.withAlpha(25), color: Colors.black.withAlpha(25),
offset: Offset(0, 3), offset: Offset(0, 3),
blurRadius: 14, blurRadius: 14,
spreadRadius: 0, spreadRadius: 0,
) ),
], ],
), ),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Stack( Stack(
alignment: Alignment.center, alignment: Alignment.center,
@ -280,9 +282,9 @@ class _MineWalletPage extends State<MineWalletPage> {
child: Text( child: Text(
S.of(context).zhanghuyue, S.of(context).zhanghuyue,
style: TextStyle( style: TextStyle(
fontWeight: MyFontWeight.medium, fontWeight: MyFontWeight.semi_bold,
color: Color(0xFF353535), color: Color(0xFF353535),
fontSize: 16.sp, fontSize: 20.sp,
), ),
), ),
), ),
@ -304,7 +306,7 @@ class _MineWalletPage extends State<MineWalletPage> {
color: Color(0xFF353535), color: Color(0xFF353535),
fontSize: 12.sp, fontSize: 12.sp,
), ),
) ),
], ],
), ),
), ),
@ -321,17 +323,17 @@ class _MineWalletPage extends State<MineWalletPage> {
fontSize: 50.sp, fontSize: 50.sp,
), ),
), ),
SizedBox( // SizedBox(
height: 4.h, // height: 4.h,
), // ),
Text( // Text(
S.of(context).keyongyue, // S.of(context).keyongyue,
style: TextStyle( // style: TextStyle(
color: Color(0xFF20662A), // color: Color(0xFF20662A),
fontSize: 16.sp, // fontSize: 16.sp,
fontWeight: MyFontWeight.regular // fontWeight: MyFontWeight.regular
), // ),
), // ),
SizedBox( SizedBox(
height: 24.h, height: 24.h,
), ),

996
lib/order/order_detail_page.dart

File diff suppressed because it is too large Load Diff

330
lib/order/order_view/order_address.dart

@ -0,0 +1,330 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/retrofit/data/order_info.dart';
import 'package:huixiang/view_widget/border_text.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:url_launcher/url_launcher.dart';
class OrderAddress extends StatefulWidget {
final int orderStatus;
final int isTakeOut;
final int sendStatus;
final int payStatus;
final int refundStatus;
final String title;
final String center;
final Function orderCancel;
final OrderInfo orderInfo;
OrderAddress(this.orderStatus, this.isTakeOut, this.sendStatus, this.payStatus, this.refundStatus, this.title, this.center, this.orderCancel, this.orderInfo);
@override
State<StatefulWidget> createState() {
return _OrderAddress();
}
}
class _OrderAddress extends State<OrderAddress> {
@override
Widget build(BuildContext context) {
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(
(widget.orderInfo != null && widget.orderInfo.addressExt != null)
? ((widget.isTakeOut == 0
? widget.orderInfo.storeName
: widget.orderInfo.addressExt.recName) ??
"")
: "",
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 14.sp,
color: Color(0xFF4C4C4C),
),
),
SizedBox(
width: 12.w,
),
Expanded(
child: Text(
(widget.orderInfo != null && widget.orderInfo.addressExt != null)
? (widget.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(
(widget.orderInfo != null && widget.orderInfo.addressExt != null)
? (widget.orderInfo.addressExt.address ?? "")
: "",
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 10.sp,
color: Color(0xFFA29E9E),
),
),
),
Visibility(
visible: widget.orderStatus < 5 && widget.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: widget.orderStatus < 5 && widget.refundStatus == 0,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
InkWell(
onTap: () {
if (widget.payStatus == 0) {
widget.orderCancel();
} else if (widget.payStatus < 4) {
SmartDialog.show(
widget: TextImageWidget(
"assets/image/icon_empty.png",
S.of(context).ruxutuikuanqingyumendianlianxi,
"",
S.of(context).zhidianmendian,
(open) {
if (open) {
String mobile = (widget.orderInfo != null &&
widget.orderInfo.storeVO != null)
? (widget.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(
widget.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(
widget.payStatus == 0
? S.of(context).quxiaodingdan
: S.of(context).shenqingtuikuan,
style: TextStyle(
color: Color(0xFF353535),
fontSize: 12.sp,
),
),
],
),
),
),
GestureDetector(
onTap: () {
if (widget.payStatus == 0) {
carryOnPay();
} else {
String storeId =
(widget.orderInfo != null && widget.orderInfo.storeVO != null)
? (widget.orderInfo.storeVO.id ?? "")
: "";
String storeName =
(widget.orderInfo != null && widget.orderInfo.storeVO != null)
? (widget.orderInfo.storeVO.storeName ?? "")
: "";
aginOrder(storeId, storeName);
}
},
child: Container(
padding: EdgeInsets.all(5),
child: Column(
children: [
Image.asset(
widget.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(
widget.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';
}
}
aginOrder(storeId, storeName) {
Navigator.of(context).pushNamed('/router/union_detail_page',
arguments: {"id": storeId, "storeName": storeName});
}
carryOnPay() async {
showDialog(
context: context,
builder: (context) {
return AlertDialog(
content: Container(
width: MediaQuery.of(context).size.width - 84.w,
height: 140.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,
),
],
),
],
),
),
);
},
);
}
}

378
lib/order/order_view/order_commodity.dart

@ -0,0 +1,378 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/retrofit/data/order_info.dart';
import 'package:huixiang/view_widget/custom_image.dart';
import 'package:huixiang/view_widget/separator.dart';
class OrderCommodity extends StatefulWidget {
final OrderInfo orderInfo;
OrderCommodity(this.orderInfo);
@override
State<StatefulWidget> createState() {
return _OrderCommodity();
}
}
class _OrderCommodity extends State<OrderCommodity> {
@override
Widget build(BuildContext context) {
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 (widget.orderInfo == null) return [];
List<Widget> widgets = [];
if (widget.orderInfo.productList != null) {
widgets
.addAll(widget.orderInfo.productList.map((e) => commodityItem(e)).toList());
}
widgets.add(SizedBox(height: 20.h));
if (widget.orderInfo.isTakeOut != 0) {
//
widgets.add(discountItem(
Color(0xFFFF7A1A),
widget.orderInfo.isTakeOut == 1
? S.of(context).peisongfei
: S.of(context).yunfei,
"",
"+${widget.orderInfo.postFee}"));
}
if (widget.orderInfo.orderDetail != null &&
widget.orderInfo.orderDetail.couponDTO != null) {
//
widgets.add(discountItem(
Color(0xFF32A060),
S.of(context).youhuiquan,
widget.orderInfo.orderDetail.couponDTO.name,
widget.orderInfo.orderDetail.couponDTO.money));
}
if (widget.orderInfo.storeVO != null && widget.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 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 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 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(
(widget.orderInfo != null && widget.orderInfo.productList != null)
? widget.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 (widget.orderInfo == null) return "";
double totalPrice = (double.tryParse(widget.orderInfo.orderSum) +
double.tryParse(widget.orderInfo.postFee));
if (widget.orderInfo.orderDetail != null &&
widget.orderInfo.orderDetail.couponDTO != null) {
totalPrice -= double.tryParse(widget.orderInfo.orderDetail.couponDTO.money);
}
return "$totalPrice";
}
}

119
lib/order/order_view/order_info.dart

@ -0,0 +1,119 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/retrofit/data/order_info.dart';
class OrderInfoView extends StatefulWidget {
final OrderInfo orderInfo;
OrderInfoView(this.orderInfo);
@override
State<StatefulWidget> createState() {
return _OrderInfoView();
}
}
class _OrderInfoView extends State<OrderInfoView> {
@override
Widget build(BuildContext context) {
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, widget.orderInfo != null ? widget.orderInfo.id : ""),
orderInfoItem(S.of(context).xiadanshijian,
widget.orderInfo != null ? widget.orderInfo.createTime : ""),
// orderInfoItem(S.of(context).peisongfangshi, orderInfo != null ? orderInfo.createTime : ""),
orderInfoItem(
S.of(context).beizhu,
widget.orderInfo != null
? widget.orderInfo.notes ?? S.of(context).qingshurubeizhuyaoqiu
: S.of(context).qingshurubeizhuyaoqiu),
orderInfoItem(S.of(context).zhifufangshi,
widget.orderInfo != null ? payChannel() : S.of(context).yue),
],
),
);
}
String payChannel() {
switch (widget.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,
),
],
),
);
}
}

198
lib/order/order_view/order_status.dart

@ -0,0 +1,198 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/retrofit/data/order_info.dart';
import 'package:huixiang/utils/flutter_utils.dart';
import 'package:huixiang/view_widget/border_text.dart';
import 'package:huixiang/view_widget/icon_text.dart';
import 'package:huixiang/view_widget/round_button.dart';
class OrderStatus extends StatefulWidget {
final int orderStatus;
final int isTakeOut;
final int sendStatus;
final int payStatus;
final int refundStatus;
final String title;
final String center;
final OrderInfo orderInfo;
OrderStatus(this.orderStatus, this.isTakeOut, this.sendStatus, this.payStatus, this.refundStatus, this.title, this.center, this.orderInfo);
@override
State<StatefulWidget> createState() {
return _OrderStatus();
}
}
class _OrderStatus extends State<OrderStatus> {
@override
Widget build(BuildContext context) {
return Container(
height: widget.orderStatus >= 4 ? 118.h : 118.h,
padding: EdgeInsets.fromLTRB(16.w, 0, 16.w, 10.h),
child: Column(
children: [
Visibility(
visible: widget.center != null && widget.center != "",
child: Container(
child: IconText(
(widget.center != null && widget.center != "") ? widget.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: widget.isTakeOut == 0
? S.of(context).ziqu
: widget.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(
widget.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: (widget.orderStatus >= 4 || widget.isTakeOut == 2)
? false
: (widget.isTakeOut == 0)
? !(widget.payStatus == 1)
: (widget.isTakeOut == 1)
? !(widget.payStatus == 1 &&
(widget.sendStatus != 2 &&
widget.sendStatus != 3))
: !(widget.payStatus == 1 &&
(widget.sendStatus != 1)),
),
],
),
flex: 1,
),
],
),
);
}
List<Widget> timeWidget() {
if (widget.orderInfo == null) return [];
String hour = "";
String minute = "";
if (widget.payStatus == 0) {
String hourMinute = AppUtils.getHourMinuteAfter30mByString(
(widget.orderInfo != null) ? widget.orderInfo.createTime : "");
var hourMinutes = hourMinute.split(":");
hour = hourMinutes[0];
minute = hourMinutes[1];
} else {
if (widget.isTakeOut == 0) {
} else if (widget.isTakeOut == 1) {
if (widget.sendStatus == 2 || widget.sendStatus == 3) {
String hourMinute = AppUtils.getHourMinuteByString(
(widget.orderInfo != null && widget.orderInfo.orderDetail != null)
? widget.orderInfo.orderDetail.predictTime
: "");
var hourMinutes = hourMinute.split(":");
hour = hourMinutes[0];
minute = hourMinutes[1];
}
} else if (widget.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),
),
),
];
}
}

2
lib/union/union_details_page.dart

@ -44,6 +44,8 @@ class _UnionDetailsPage extends State<UnionDetailsPage> {
@override @override
void dispose() { void dispose() {
SmartDialog.dismiss();
EasyLoading.dismiss();
super.dispose(); super.dispose();
refreshController.dispose(); refreshController.dispose();
} }

2
lib/view_widget/receive_success.dart

@ -53,7 +53,7 @@ class ReceiveSuccess extends StatelessWidget {
child: Text( child: Text(
S.of(context).kaquan, S.of(context).kaquan,
style: TextStyle( style: TextStyle(
color: Color(0xffFF7A1A), color: Color(0xFFFF7A1A),
fontSize: 14.sp, fontSize: 14.sp,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),

Loading…
Cancel
Save