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/order/order_view/order_address.dart'; import 'package:huixiang/order/order_view/order_commodity.dart'; import 'package:huixiang/order/order_view/order_info.dart'; import 'package:huixiang/order/order_view/order_status.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/view_widget/icon_text.dart'; import 'package:huixiang/view_widget/my_appbar.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; class OrderDetailPage extends StatefulWidget { final arguments; OrderDetailPage({this.arguments}); @override State createState() { return _OrderDetailPage(); } } class _OrderDetailPage extends State { 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 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("order refund_status: $refundStatus"); print("order payStatus: $payStatus"); print("order orderStatus: $orderStatus"); print("order sendStatus: $sendStatus"); print("order isTakeOut: $isTakeOut"); if (mounted) setState(() { statusTitle(); }); } } @override Widget build(BuildContext context) { return Stack( children: [ Positioned( top: 0, left: 0, right: 0, child: Container( height: (orderStatus >= 4 ? 118.h : 118.h) + MediaQuery.of(context).padding.top + kToolbarHeight + 48.h, color: Color(0xFF3A405A), width: MediaQuery.of(context).size.width, ), ), Positioned( child: Scaffold( backgroundColor: Colors.transparent, appBar: MyAppBar( title: title ?? S.of(context).jinxingzhongdedingdan, titleColor: Colors.transparent, background: Colors.transparent, 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: // ), ), body: Container( child: /*Column( children: [ Expanded( child:*/ SingleChildScrollView( physics: BouncingScrollPhysics(), child: Container( child: Column( children: [ ///订单状态显示 OrderStatus(orderStatus, isTakeOut, sendStatus, payStatus, refundStatus, title, center, orderInfo), ///订单取货地址,或, 收货地址 OrderAddress( orderStatus, isTakeOut, sendStatus, payStatus, refundStatus, title, center, _orderCancel, orderInfo), ///订单商品 OrderCommodity(orderInfo), // if (payStatus == 0) couponRemarks(), /*(payStatus == 0) ? paySelector() : */ ///显示订单信息 OrderInfoView(orderInfo), Container( height: 42.h, ), ], ), ), ), // flex: 1, // ), // if (payStatus == 0) // bottomPay(), // ], // ), ), ), left: 0, right: 0, top: 0, bottom: 0, ) ], ); } 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, ), ), ), ), ], ), ); } 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).pingtaiyue, style: TextStyle( fontSize: 12.sp, color: Color(0xff353535), ), ), ], ), SizedBox( height: 20.h, ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ checkView(1), // Image.asset("assets/image/icon_alipay.png"), Text( S.of(context).dianpuyue, style: TextStyle( fontSize: 12.sp, color: Color(0xff353535), ), ), ], ), SizedBox( height: 20.h, ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, children: [ checkView(2), 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, )), ); } _orderCancel() async { BaseData baseData = await apiService.orderCancel(widget.arguments["id"]); if (baseData != null && baseData.isSuccess) { SmartDialog.showToast("订单取消成功"); Future.delayed(Duration(milliseconds: 300), () { queryDetails(); }); } } 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, ), ], ), ); } }