import 'dart:convert'; import 'dart:io'; import 'dart:math' as math; import 'package:bbyyy/beans/ad_bean_entity.dart'; import 'package:bbyyy/beans/android_app_version_bean_entity.dart'; import 'package:bbyyy/beans/flow_bean_entity.dart'; import 'package:bbyyy/beans/goods_bean_entity.dart'; import 'package:bbyyy/beans/my_shop_bean_entity.dart'; import 'package:bbyyy/beans/smart_order_bean_entity.dart'; import 'package:bbyyy/beans/store_bean_entity.dart'; import 'package:bbyyy/beans/user_bean_entity.dart'; import 'package:bbyyy/beans/user_vp_bean_entity.dart'; import 'package:bbyyy/https/MyDio.dart'; import 'package:bbyyy/https/my_request.dart'; import 'package:bbyyy/https/url.dart'; import 'package:bbyyy/my_tools/easy_loading/easy_loading.dart'; import 'package:bbyyy/my_tools/event_bus.dart'; import 'package:bbyyy/my_tools/global.dart'; import 'package:bbyyy/my_tools/my_colors.dart'; import 'package:bbyyy/my_tools/my_cookie.dart'; import 'package:bbyyy/my_tools/my_tools.dart'; import 'package:bbyyy/paegs/gang_page/application_details_page/application_details_page.dart'; import 'package:bbyyy/paegs/gang_page/gang_in_page/gang_in_page.dart'; import 'package:bbyyy/paegs/mine_page/order_page/apply_for_compensation_page/apply_for_compensation_page.dart'; import 'package:bbyyy/paegs/mine_page/privacy_protection_props_page/privacy_protection_props_page.dart'; import 'package:bbyyy/paegs/product_details_page/product_details_page.dart'; import 'package:bbyyy/paegs/release_goods_page/release_goods_page.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:dio/dio.dart'; import 'package:flustars/flustars.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_svg/svg.dart'; import 'package:install_plugin/install_plugin.dart'; import 'package:launch_review/launch_review.dart'; import 'package:lpinyin/lpinyin.dart'; import 'package:path_provider/path_provider.dart'; import '../beans/complain_bean_entity.dart'; import '../paegs/ad_details_page/ad_details_page.dart'; import '../paegs/other_people_s_turnover_page/other_people_s_turnover_page.dart'; import '../paegs/pay_page/pay_page.dart'; import 'const.dart'; import 'dims.dart'; class MyViews { Widget netImg(String path, double h, double w, {String placeholder = 'images/svg/缺省头像.svg'}) { return CachedNetworkImage( imageUrl: path, height: h, width: w, fit: BoxFit.cover, placeholder: (context, url) => SvgPicture.asset( placeholder, fit: BoxFit.cover, height: h, width: w, ), errorWidget: (context, url, error) => SvgPicture.asset( placeholder, height: h, fit: BoxFit.cover, width: w, ), ); } Widget myText(String content, Color color, double fs, {double height = 1.4}) { return Text( content, style: TextStyle(color: color, fontSize: fs, height: height), ); } Widget myAppBar(String title, BuildContext context, List rW) { return Container( color: Colors.white, child: SafeArea( bottom: false, child: Container( height: 45, width: double.infinity, color: Colors.white, child: Stack( children: [ Text( title, style: TextStyle(color: MyColors.c333333, fontSize: 16), ), Positioned( left: 0, child: GestureDetector( onTap: () { Navigator.pop(context); }, behavior: HitTestBehavior.translucent, child: Transform.rotate( angle: math.pi, child: Padding( padding: EdgeInsets.only( left: 16, right: 16, top: 8, bottom: 8), child: SvgPicture.asset( 'images/svg/箭头.svg', color: MyColors.c333333, height: 14, ), ), ), ), ), Row( children: rW, mainAxisAlignment: MainAxisAlignment.end, ) ], alignment: Alignment.center, ), ), ), ); } Widget getGoodsItem(var data, BuildContext context) { double w = (MediaQuery.of(context).size.width - 28 - 8) / 2; if (data is GoodsBeanDataData) { return GestureDetector( onTap: () { MyTools().toPage(context, ProductDetailsPage(data), (then) {}); }, behavior: HitTestBehavior.translucent, child: Card( elevation: 2, shadowColor: MyColors.c21333333, child: Column( children: [ Padding( padding: EdgeInsets.only(left: 6, top: 6, bottom: 3), child: Row( children: [ ClipRRect( child: MyViews().netImg(imgURL(data.shopPic), 20, 20), borderRadius: BorderRadius.all(Radius.circular(10)), ), Expanded( child: Container( margin: EdgeInsets.only(right: 5, left: 5), child: Text( data.shopName, style: TextStyle( color: MyColors.c999999, fontSize: 10, ), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), ), ), // Container( // decoration: BoxDecoration( // borderRadius: BorderRadius.only( // topLeft: Radius.circular(7), // bottomLeft: Radius.circular(7), // ), // color: data.onSale ? MyColors.cFF4233 : MyColors.cADD358, // ), // height: 14, // width: 28, // child: Text( // data.onSale ? '找货' : '有货', // style: TextStyle(color: Colors.white, fontSize: 8), // ), // alignment: Alignment.center, // padding: EdgeInsets.only(bottom: 0.8), // ) ], ), ), MyViews().netImg(imgURL(data.coverPath), w, w, placeholder: 'images/svg/goodsDefImg.svg'), Container( padding: EdgeInsets.only(right: 6, left: 6, top: 8), child: Text( '${data.title}\n${data.description}', style: TextStyle(color: Colors.black, fontSize: 12), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), ), Container( padding: EdgeInsets.only(right: 6, left: 6, top: 7), child: Row( children: [ Expanded( child: Text( '¥${data.price}', style: TextStyle(color: MyColors.cFF4233, fontSize: 15), ), ), Container( child: Text( '详情', style: TextStyle(color: MyColors.cFF4233, fontSize: 12), ), alignment: Alignment.center, padding: EdgeInsets.only(bottom: 2), decoration: BoxDecoration( border: Border.all(color: MyColors.cFF4233, width: 1), borderRadius: BorderRadius.all(Radius.circular(10))), height: 20, width: 50, ) ], ), ) ], crossAxisAlignment: CrossAxisAlignment.start, ), ), ); } else if (data is AdBeanDataData) { return GestureDetector( onTap: () { MyTools().toPage(context, AdDetailsPage(data), (then) {}); }, behavior: HitTestBehavior.translucent, child: Card( elevation: 2, shadowColor: MyColors.c21333333, child: Column( children: [ Padding( padding: EdgeInsets.only(left: 6, top: 6, bottom: 3), child: Row( children: [ ClipRRect( child: Container( height: 20, ), borderRadius: BorderRadius.all(Radius.circular(10)), ), Expanded( child: Container( margin: EdgeInsets.only(right: 5, left: 5), child: Text( '', style: TextStyle( color: MyColors.c999999, fontSize: 10, ), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), ), ), ], ), ), MyViews().netImg(imgURL(data.coverPath), w, w, placeholder: 'images/svg/goodsDefImg.svg'), Container( padding: EdgeInsets.only(right: 6, left: 6, top: 8), child: Text( '${data.title}\n${data.description}', style: TextStyle(color: Colors.black, fontSize: 12), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), ), Container( padding: EdgeInsets.only(right: 6, top: 7), child: Row( children: [ Container( decoration: BoxDecoration( color: MyColors.cADD358, borderRadius: BorderRadius.only( topRight: Radius.circular(8), bottomRight: Radius.circular(8), ), ), height: 16, width: 32, child: myText('推广', Colors.white, 9), alignment: Alignment.center, ), Container( child: Text( '详情', style: TextStyle(color: MyColors.cFF4233, fontSize: 12), ), alignment: Alignment.center, padding: EdgeInsets.only(bottom: 2), decoration: BoxDecoration( border: Border.all(color: MyColors.cFF4233, width: 1), borderRadius: BorderRadius.all(Radius.circular(10))), height: 20, width: 50, ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ) ], crossAxisAlignment: CrossAxisAlignment.start, ), ), ); } } Widget getNoPayGoodsItem( SmartOrderBeanDataData data, BuildContext context, int ownerUid) { return Container( margin: EdgeInsets.only(bottom: 10), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.all( Radius.circular(4), ), ), child: Column( children: [ Container( margin: EdgeInsets.only(left: 10, top: 16), child: Row( children: [ ClipRRect( child: data.type == orderTypeAnnualFee || data.sellerUid == 0 ? Image.asset( 'images/app_logo.png', height: 25, width: 25, ) : MyViews().netImg(imgURL(data.sellerPic), 25, 25), borderRadius: BorderRadius.all(Radius.circular(12.5)), ), Container( margin: EdgeInsets.only(right: 5, left: 5), child: Text( data.type == orderTypeAnnualFee || data.sellerUid == 0 ? '$appName' : '${data.sellerName}(${data.sellerUid})', style: TextStyle( color: MyColors.c333333, fontSize: 14, ), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), ), ], ), ), Container( height: 0.5, color: MyColors.cE7E7E7, margin: EdgeInsets.only(left: 10, right: 10, top: 11, bottom: 11), ), orderStyle(data), Container( height: 0.5, color: MyColors.cE7E7E7, margin: EdgeInsets.only(left: 10, right: 10, top: 11, bottom: 11), ), Container( padding: EdgeInsets.only(left: 10, right: 10, bottom: 11), child: Row( children: [ Text( '下单时间:${data.createTime}', style: TextStyle(color: MyColors.c666666, fontSize: 11), ), GestureDetector( onTap: () { if (data.buyerName.contains(MyCookie().getName()) || MyCookie().getName().contains(data.buyerName) || MyCookie().getUID() == ownerUid) { showPayDialog(data, context, () { Navigator.pop(context); MyTools().toPage(context, PayPage(data.uid, false, data.amount), (then) {}); // getUserWalletBalance((re, hE) { // if (!hE) { // UserBalanceEntity balance = UserBalanceEntity() // .fromJson(json.decode(re.data.toString())); // if (balance.data >= data.amount) { // payOrder(payWayWallet, data.uid, (re, hE) { // if (!hE) { // showToast('支付成功'); // EventBus().emit('payAnOrder'); // } // }, (e) {}, context); // } else { // payOrder(payWayAliPay, data.uid, (re, hE) { // if (!hE) { // PayByAlipayBeanEntity entity = // PayByAlipayBeanEntity().fromJson( // json.decode(re.data.toString())); // EventBus().on('alipayPaymentCallback', (arg) { // EventBus().off('alipayPaymentCallback'); // EasyLoading.dismiss(); // showToast('支付成功'); // EventBus().emit('reNoPayOrder'); // }); // print(entity.data); // EasyLoading.instance // ..contentPadding = EdgeInsets.symmetric( // horizontal: 20, vertical: 12) // ..alignment = Alignment.center // ..loadingStyle = EasyLoadingStyle.light // ..contentMargin = EdgeInsets.all(20); // EasyLoading.show(); // aliPay(entity.data).then((value) { // print(json.encode(value)); // AlipayResultBeanEntity e = // AlipayResultBeanEntity().fromJson( // json.decode(json.encode(value))); // try { // int r = int.parse(e.resultStatus); // if (r == 9000) { // showToast('支付成功'); // } else { // showToast(aliPayResultStatus(r)); // resetOrder(data.uid); // } // } catch (e) { // EasyLoading.dismiss(); // } // }); // // EventBus().emit('payAnOrder'); // } // }, (e) {}, context); // // showToast('积分余额不足'); // } // } // }, (e) {}, context); }); } else { showToast('该订单与你无关'); } }, behavior: HitTestBehavior.translucent, child: Visibility( visible: data.state == orderStateUnpaid && data.sellerUid != MyCookie().getUID(), child: Container( height: 26, width: 70, decoration: BoxDecoration( color: MyColors.cFF4233, borderRadius: BorderRadius.all(Radius.circular(13))), child: Text( '立即支付', style: TextStyle(color: Colors.white, fontSize: 12), ), alignment: Alignment.center, padding: EdgeInsets.only(bottom: 2), ), ), ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ) ], ), ); } Widget getMembersItem(MyShopBeanDataData data, BuildContext context) { return Column( children: [ ClipRRect( child: netImg(imgURL(data.userPic), 40, 40), borderRadius: BorderRadius.all(Radius.circular(20)), ), Container( child: Text( data.userName, style: TextStyle(color: MyColors.c666666, fontSize: 12), ), margin: EdgeInsets.only(top: 8), ) ], ); } Widget getUserItem(UserBeanDataData data, BuildContext context) { return Container( padding: EdgeInsets.only(left: 15, right: 15), color: Colors.white, child: Column( children: [ Container( margin: EdgeInsets.only(top: 8, bottom: 6), child: Row( children: [ Container( margin: EdgeInsets.only(right: 6), child: ClipRRect( child: netImg(imgURL(data.picture), 42, 42), borderRadius: BorderRadius.circular(21), ), ), myText('${data.name} (${data.uid})', MyColors.c333333, 15), Expanded( child: Container( child: GestureDetector( onTap: () { EventBus().emit('addMember', data); }, behavior: HitTestBehavior.translucent, child: Container( decoration: BoxDecoration( border: Border.all(color: MyColors.cFF4233, width: 1), borderRadius: BorderRadius.circular(14), ), height: 28, width: 70, child: myText('邀请入帮', MyColors.cFF4233, 12), alignment: Alignment.center, ), ), alignment: Alignment.centerRight, ), ), ], ), ), Container( height: 0.5, color: MyColors.cE7E7E7, ) ], ), ); } Widget getRemoveMemberItem(MyShopBeanDataData data, BuildContext context) { return Container( padding: EdgeInsets.only(left: 15, right: 15), color: Colors.white, child: Column( children: [ Container( margin: EdgeInsets.only(top: 8, bottom: 6), child: Row( children: [ Container( margin: EdgeInsets.only(right: 6), child: ClipRRect( child: netImg(imgURL(data.userPic), 42, 42), borderRadius: BorderRadius.circular(21), ), ), myText( '${data.userName} (${data.userUid})', MyColors.c333333, 15), Expanded( child: Container( child: GestureDetector( onTap: () { EventBus().emit('removeMember', data); }, behavior: HitTestBehavior.translucent, child: Container( decoration: BoxDecoration( border: Border.all(color: MyColors.cFF4233, width: 1), borderRadius: BorderRadius.circular(14), ), height: 28, width: 70, child: myText('移除成员', MyColors.cFF4233, 12), alignment: Alignment.center, ), ), alignment: Alignment.centerRight, ), ), ], ), ), Container( height: 0.5, color: MyColors.cE7E7E7, ) ], ), ); } Widget getWalletItem(FlowBeanDataDataRecords flow, BuildContext context) { return Container( padding: EdgeInsets.symmetric(horizontal: 15), child: Column( children: [ Row( children: [ Container( child: ClipRRect( child: flow.traderUid == 0 ? Image.asset( 'images/app_logo.png', width: 50, height: 50, ) : MyViews().netImg(imgURL(flow.traderPic), 50, 50), borderRadius: BorderRadius.all(Radius.circular(25)), ), margin: EdgeInsets.only(right: 12), ), Expanded( child: Column( children: [ Row( children: [ Text( flow.traderUid == 0 ? '平台' : flow.traderName, style: TextStyle(color: MyColors.c333333, fontSize: 14), ), Text( '${flow.paidAmount}', style: TextStyle(color: MyColors.c333333, fontSize: 15), ), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), Row( children: [ Text( flow.traderUid == 0 ? "" : 'ID:${flow.traderUid}', style: TextStyle(color: MyColors.c666666, fontSize: 12), ), Text( flow.payTime, style: TextStyle(color: MyColors.c666666, fontSize: 11), ), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), Row( children: [ Text( '${flowType(flow.type)}', style: TextStyle(color: MyColors.c666666, fontSize: 12), ), Text( '${flow.userBalance}', style: TextStyle(color: MyColors.c666666, fontSize: 11), ), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ) ], ), ) ], ), Container( color: MyColors.cE7E7E7, height: 0.5, margin: EdgeInsets.only(top: 14, bottom: 12), ) ], ), ); } Widget getMyGoodsItem(GoodsBeanDataData data, BuildContext context) { return Container( padding: EdgeInsets.only(left: 8, right: 8, bottom: 7, top: 18), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.all( Radius.circular(4), ), ), margin: EdgeInsets.only(left: 10, right: 10, bottom: 10), child: Column( children: [ Row( children: [ // Container( // decoration: BoxDecoration( // color: data.onSale ? MyColors.cADD358 : MyColors.cFF4233, // borderRadius: BorderRadius.all( // Radius.circular(4), // ), // ), // height: 20, // width: 40, // child: Text( // data.onSale ? '有货' : '找货', // style: TextStyle(color: Colors.white, fontSize: 10), // ), // alignment: Alignment.center, // padding: EdgeInsets.only(bottom: 2), // margin: EdgeInsets.only(right: 10), // ), ClipRRect( child: MyViews().netImg(imgURL(data.shopPic), 25, 25), borderRadius: BorderRadius.circular(12.5), ), Container( margin: EdgeInsets.only(left: 10), child: Text( data.shopName, style: TextStyle(color: MyColors.c333333, fontSize: 14), ), ), ], ), Container( height: 0.5, color: MyColors.cE7E7E7, margin: EdgeInsets.only(top: 14), ), Row( children: [ Container( child: MyViews().netImg(imgURL(data.coverPath), 84, 82, placeholder: 'images/svg/goodsDefImg.svg'), margin: EdgeInsets.only(right: 8, top: 11, bottom: 11), ), Expanded( child: Container( child: Column( children: [ Text( '${data.title}\n${data.description}', style: TextStyle(color: MyColors.c333333, fontSize: 13), ), Row( children: [ Text( '¥${data.price}', style: TextStyle( color: MyColors.cFF4233, fontSize: 12), ), Row( children: [ GestureDetector( onTap: () { MyDio().update({ 'key': 'commodity', 'values': { 'id': data.id, 'on_sale': !data.onSale, } }, (response, hasError) { if (!hasError) { EventBus().emit('updateProduct'); } }, (error) {}); }, behavior: HitTestBehavior.translucent, child: Container( margin: EdgeInsets.only(left: 10), child: Text( data.onSale ? '下架' : '上架', style: TextStyle( color: data.onSale ? MyColors.c999999 : MyColors.cFF4233, fontSize: 12), ), alignment: Alignment.center, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(13), border: Border.all( color: data.onSale ? MyColors.c999999 : MyColors.cFF4233, width: 1)), height: 26, width: 70, ), ), GestureDetector( onTap: () { MyTools().toPage( context, ReleaseGoodsPage(data), (then) { EventBus().emit('updateProduct'); }); }, behavior: HitTestBehavior.translucent, child: Container( margin: EdgeInsets.only(left: 10), child: Text( '修改', style: TextStyle( color: Colors.white, fontSize: 12), ), alignment: Alignment.center, decoration: BoxDecoration( color: MyColors.cFF4233, borderRadius: BorderRadius.circular(13)), height: 26, width: 70, ), ), ], ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, ), height: 84, ), ) ], ), ], ), ); } Widget getCompensateItem(int index, BuildContext context) { return Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(4), ), margin: EdgeInsets.only(bottom: 10, left: 10, right: 10), padding: EdgeInsets.only(left: 8, right: 8, top: 14, bottom: 8), child: Column( children: [ Row( children: [ ClipRRect( child: MyViews().netImg('path', 25, 25), borderRadius: BorderRadius.circular(12.5), ), Container( child: Text( '一颗带货达人小星星(21548679)', style: TextStyle(color: MyColors.c333333, fontSize: 14), ), margin: EdgeInsets.only(left: 7), ) ], ), Container( color: MyColors.cE7E7E7, height: 0.5, margin: EdgeInsets.only(top: 13, bottom: 9), ), Text( '所属货帮:全球顶尖带货达人团', style: TextStyle(color: MyColors.c333333, fontSize: 13), ), Container( color: MyColors.cE7E7E7, height: 0.5, margin: EdgeInsets.only(top: 9, bottom: 9), ), Text( '订单金额:¥200.00', style: TextStyle(color: MyColors.c333333, fontSize: 13), ), Container( color: MyColors.cE7E7E7, height: 0.5, margin: EdgeInsets.only(top: 9, bottom: 9), ), Text( '申请时间:2020-08-24 10:00:00', style: TextStyle(color: MyColors.c333333, fontSize: 13), ), Container( color: MyColors.cE7E7E7, height: 0.5, margin: EdgeInsets.only(top: 9, bottom: 9), ), Text( '申请理由', style: TextStyle(color: MyColors.c333333, fontSize: 13), ), Container( margin: EdgeInsets.only(top: 6), decoration: BoxDecoration( color: MyColors.c19FF4233, borderRadius: BorderRadius.circular(4)), constraints: BoxConstraints(minHeight: 60), child: Text( '产品质量有问题,希望获得一定的金额的赔付', style: TextStyle(color: MyColors.c333333, fontSize: 13), ), padding: EdgeInsets.symmetric(vertical: 8, horizontal: 7), alignment: Alignment.topLeft, ), Container( color: MyColors.cE7E7E7, height: 0.5, margin: EdgeInsets.only(top: 9, bottom: 9), ), Row( children: [ Text( '处理结果:', style: TextStyle(color: MyColors.c333333, fontSize: 13), ), Text( '已处理', style: TextStyle(color: MyColors.c2B9C77, fontSize: 13), ), Text( '/', style: TextStyle(color: MyColors.c333333, fontSize: 13), ), Text( '处理中', style: TextStyle(color: MyColors.c3D6CD5, fontSize: 13), ), Text( '/', style: TextStyle(color: MyColors.c333333, fontSize: 13), ), Text( '已处理', style: TextStyle(color: MyColors.cFF4233, fontSize: 13), ), ], ), Container( margin: EdgeInsets.only(top: 6), decoration: BoxDecoration( color: MyColors.c19FF6700, borderRadius: BorderRadius.circular(4)), constraints: BoxConstraints(minHeight: 60), child: Text( '赔偿买家20元现金(赔付成功/失败结果 )', style: TextStyle(color: MyColors.cFF9249, fontSize: 13), ), padding: EdgeInsets.symmetric(vertical: 8, horizontal: 7), alignment: Alignment.topLeft, ), Container( color: MyColors.cE7E7E7, height: 0.5, margin: EdgeInsets.only(top: 9, bottom: 9), ), Text( '处理时间:2020-08-25 10:00:00', style: TextStyle(color: MyColors.c333333, fontSize: 13), ), Container( color: MyColors.cE7E7E7, height: 0.5, margin: EdgeInsets.only(top: 9, bottom: 9), ), Row( children: [ Container( decoration: BoxDecoration( border: Border.all(color: MyColors.cFF4233, width: 1), borderRadius: BorderRadius.circular(13)), height: 26, width: 70, child: Text( '查看申请', style: TextStyle(color: MyColors.cFF4233, fontSize: 12), ), alignment: Alignment.center, ), Container( margin: EdgeInsets.only(left: 10), decoration: BoxDecoration( color: MyColors.cFF4233, borderRadius: BorderRadius.circular(13)), height: 26, width: 70, child: Text( '查看订单', style: TextStyle(color: Colors.white, fontSize: 12), ), alignment: Alignment.center, ) ], mainAxisAlignment: MainAxisAlignment.end, ) ], crossAxisAlignment: CrossAxisAlignment.start, ), ); } List states = ['未支付', '已支付', '支付中', '支付失败', '已代付', '已取消']; Widget getOrdersItem(SmartOrderBeanDataData data, BuildContext context) { return Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(4)), margin: EdgeInsets.only(bottom: 10, left: 10, right: 10), padding: EdgeInsets.only(left: 10, right: 10, top: 16, bottom: 7), child: Column( children: [ Row( children: [ Row( children: [ ClipRRect( borderRadius: BorderRadius.circular(12.5), child: MyViews().netImg(imgURL(data.sellerPic), 25, 25), ), Container( margin: EdgeInsets.only(left: 7, right: 7), child: Text( data.sellerName, style: TextStyle(color: MyColors.c333333, fontSize: 14), ), ), Container( decoration: BoxDecoration( border: Border.all(color: MyColors.cFF4233, width: 1), borderRadius: BorderRadius.circular(2), ), width: 26, height: 14, child: Text( '卖家', style: TextStyle( color: MyColors.cFF4233, fontSize: 10, height: 1.0), ), alignment: Alignment.center, padding: EdgeInsets.only(top: 1), ), ], ), Text( states[data.state], style: TextStyle( color: data.state == 1 ? MyColors.c2B9C77 : MyColors.cFF4233), ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), Container( height: 0.5, color: MyColors.cE7E7E7, margin: EdgeInsets.only(top: 11, bottom: 11), ), data.type == orderTypeThirdPlatform ? Container( child: Row( children: [ Container( child: SvgPicture.asset( 'images/svg/第三方.svg', height: 45, width: 45, ), margin: EdgeInsets.only(right: 8), height: 60, width: 60, decoration: BoxDecoration( border: Border.all(color: MyColors.cEBEBEB, width: 1)), alignment: Alignment.center, ), Expanded( child: Container( height: 60, child: Column( children: [ MyViews().myText( '第三方订单(${data.uid})', MyColors.c333333, 13), MyViews().myText('付款人:${data.buyerName}', MyColors.c333333, 13), Row( children: [ MyViews().myText( '¥${data.amount}', MyColors.cFF4233, 12), MyViews().myText('x${data.commodityCount}', MyColors.c999999, 12), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, ), ), ), ], ), ) : Row( children: [ Container( child: MyViews().netImg( imgURL(data.commodityCover), 84, 82, placeholder: 'images/svg/goodsDefImg.svg'), margin: EdgeInsets.only(right: 8), ), Expanded( child: Container( height: 84, child: Column( children: [ Text( data.commodityTitle, style: TextStyle( color: MyColors.c333333, fontSize: 13), maxLines: 2, overflow: TextOverflow.ellipsis, softWrap: true, ), Row( children: [ Text( '¥${data.amount}', style: TextStyle( color: MyColors.cFF4233, fontSize: 12), ), Text( 'x1', style: TextStyle( color: MyColors.c999999, fontSize: 12), ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, ), Row( children: [ ClipRRect( borderRadius: BorderRadius.circular(12.5), child: MyViews().netImg('path', 25, 25), ), Container( child: Text( data.buyerName, style: TextStyle( color: MyColors.c333333, fontSize: 13), ), margin: EdgeInsets.only(left: 8, right: 8), ), Container( decoration: BoxDecoration( border: Border.all( color: MyColors.cFF4233, width: 1), borderRadius: BorderRadius.circular(2), ), width: 26, height: 14, child: Text( '买家', style: TextStyle( color: MyColors.cFF4233, fontSize: 10, height: 1.0), ), alignment: Alignment.center, padding: EdgeInsets.only(top: 1), ), ], ), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ), ) ], ), Container( height: 0.5, color: MyColors.cE7E7E7, margin: EdgeInsets.only(top: 11, bottom: 7), ), Row( children: [ Text( '下单时间:${data.createTime}', style: TextStyle(color: MyColors.c666666, fontSize: 11), ), GestureDetector( onTap: () { if (data.state == 0) { MyTools() .toPage(context, ApplyForCompensationPage(), (then) {}); } }, behavior: HitTestBehavior.translucent, child: Container( decoration: BoxDecoration( color: data.state == 1 ? MyColors.cFFCD00 : MyColors.cFF4233, borderRadius: BorderRadius.circular(13), ), height: 26, width: 70, child: Text( data.state == 1 ? '申请赔付' : '立即支付', style: TextStyle(color: Colors.white, fontSize: 12), ), alignment: Alignment.center, ), ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ) ], ), ); } getPunishItem(BuildContext context, ComplainBeanDataData data) { return Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(4), ), margin: EdgeInsets.only(left: 10, right: 10, bottom: 10), padding: EdgeInsets.only(left: 6, right: 6, bottom: 8, top: 12), child: Column( children: [ Row( children: [ Row( children: [ Container( child: ClipRRect( child: netImg(imgURL(data.shopPic), 25, 25), borderRadius: BorderRadius.circular(12.5), ), margin: EdgeInsets.only(right: 7), ), myText('${data.shopName}(${data.shopUid})', MyColors.c333333, 14), ], ), myText(data.handled ? '已处理' : '正在处理', data.handled ? MyColors.cADD358 : MyColors.c3D6CD5, 11) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), Container( decoration: BoxDecoration( color: MyColors.c19FF4233, borderRadius: BorderRadius.circular(4), ), constraints: BoxConstraints(minHeight: 97), width: double.infinity, padding: EdgeInsets.only(left: 11, right: 11, top: 8, bottom: 8), margin: EdgeInsets.only(top: 12, bottom: 0), child: Column( children: [ myText(data.content, MyColors.c333333, 13), Visibility( visible: data.handled, child: Container( child: myText( '处罚结果:${data.handleResult}', MyColors.c333333, 11), margin: EdgeInsets.only(top: 3, bottom: 3), ), ), myText('投诉时间:${data.complainTime}', MyColors.c333333, 11), myText('处理时间:${data.handled ? data.handleTime : '正在处理'}', MyColors.c333333, 11), ], crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ), ], crossAxisAlignment: CrossAxisAlignment.start, ), ); } Widget getApplicationItems(MyShopBeanDataData data, BuildContext context) { return Container( padding: EdgeInsets.only(left: 15, right: 15), color: Colors.white, child: Column( children: [ Container( margin: EdgeInsets.only(top: 8, bottom: 6), child: Row( children: [ Container( margin: EdgeInsets.only(right: 6), child: ClipRRect( child: netImg(imgURL(data.userPic), 42, 42), borderRadius: BorderRadius.circular(21), ), ), myText('${data.userName} 申请加入你的货帮', MyColors.c333333, 15), Expanded( child: Container( child: GestureDetector( onTap: () { MyTools().toPage(context, ApplicationDetailsPage(data), (then) { EventBus().emit('申请页面返回'); }); }, behavior: HitTestBehavior.translucent, child: Container( decoration: BoxDecoration( border: Border.all(color: MyColors.cFF4233, width: 1), borderRadius: BorderRadius.circular(14), ), height: 28, width: 70, child: myText('前往验证', MyColors.cFF4233, 12), alignment: Alignment.center, ), ), alignment: Alignment.centerRight, ), ), ], ), ), Container( height: 0.5, color: MyColors.cE7E7E7, ) ], ), ); } Widget getAddAssistantItems( MyShopBeanDataData data, BuildContext context, bool checked) { return Container( padding: EdgeInsets.only(left: 15, right: 15), color: Colors.white, child: Column( children: [ Container( margin: EdgeInsets.only(top: 8, bottom: 6), child: Row( children: [ Checkbox( activeColor: MyColors.cFF4233, checkColor: Colors.white, value: checked, onChanged: (v) { EventBus().emit('selectChanges', [data, v]); }), Container( margin: EdgeInsets.only(right: 6), child: ClipRRect( child: netImg(imgURL(data.userPic), 42, 42), borderRadius: BorderRadius.circular(21), ), ), myText( '${data.userName} (${data.userUid})', MyColors.c333333, 15), // Expanded( // child: Container( // child: GestureDetector( // onTap: () {}, // behavior: HitTestBehavior.translucent, // child: Container( // decoration: BoxDecoration( // border: Border.all(color: MyColors.cFF4233, width: 1), // borderRadius: BorderRadius.circular(14), // ), // height: 28, // width: 70, // child: myText('设为助手', MyColors.cFF4233, 12), // alignment: Alignment.center, // ), // ), // alignment: Alignment.centerRight, // ), // ), ], ), ), Container( height: 0.5, color: MyColors.cE7E7E7, ) ], ), ); } Widget getGangTransferItems( MyShopBeanDataData data, BuildContext context, bool checked) { return Container( padding: EdgeInsets.only(left: 15, right: 15), color: Colors.white, child: Column( children: [ Container( margin: EdgeInsets.only(top: 8, bottom: 6), child: Row( children: [ Checkbox( value: checked, activeColor: MyColors.cFF4233, checkColor: Colors.white, onChanged: (v) { EventBus().emit('GangTransfer', [data, v]); }), Container( margin: EdgeInsets.only(right: 6), child: ClipRRect( child: netImg(imgURL(data.userPic), 42, 42), borderRadius: BorderRadius.circular(21), ), ), myText( '${data.userName} (${data.userUid})', MyColors.c333333, 15), // Expanded( // child: Container( // child: GestureDetector( // onTap: () {}, // behavior: HitTestBehavior.translucent, // child: Container( // decoration: BoxDecoration( // border: Border.all(color: MyColors.cFF4233, width: 1), // borderRadius: BorderRadius.circular(14), // ), // height: 28, // width: 70, // child: myText('设为助手', MyColors.cFF4233, 12), // alignment: Alignment.center, // ), // ), // alignment: Alignment.centerRight, // ), // ), ], ), ), Container( height: 0.5, color: MyColors.cE7E7E7, ) ], ), ); } Widget getMemberListItems( StoreBeanDataData store, MyShopBeanDataData data, BuildContext context) { return Container( padding: EdgeInsets.only(left: 15, right: 15), color: Colors.white, child: Column( children: [ Container( margin: EdgeInsets.only(top: 8, bottom: 6), child: Row( children: [ Row( children: [ Container( margin: EdgeInsets.only(right: 6), child: ClipRRect( child: netImg(imgURL(data.userPic), 42, 42), borderRadius: BorderRadius.circular(21), ), ), myText('${data.userName} (${data.userUid})', MyColors.c333333, 15), Visibility( visible: data.role != shopUserMember, child: Container( decoration: BoxDecoration( color: data.role == shopUserStaff ? MyColors.cFF4233 : MyColors.cFFCD00, borderRadius: BorderRadius.circular(8)), height: 16, width: 30, child: myText(data.role == shopUserOwner ? "帮主" : "助手", Colors.white, 10), alignment: Alignment.center, margin: EdgeInsets.only(left: 5), ), ) ], ), Visibility( visible: data.role != shopUserOwner && data.userUid != MyCookie().getUID(), child: GestureDetector( child: Container( margin: EdgeInsets.only(right: 10), child: SvgPicture.asset( 'images/svg/透视.svg', height: 25, width: 25, ), ), onTap: () { queryWhetherThereIsANumberOfPerspectives( data, store, context); }, behavior: HitTestBehavior.translucent, ), ), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ), Container( height: 0.5, color: MyColors.cE7E7E7, ) ], ), ); } Widget getGangsItem(StoreBeanDataData data, BuildContext context) { return Column( children: [ Container( margin: EdgeInsets.only(left: 15, right: 15, top: 7), child: Row( children: [ Container( margin: EdgeInsets.only(right: 6), child: ClipRRect( child: netImg(imgURL(data.picture), 40, 40), borderRadius: BorderRadius.circular(20), ), ), myText('${data.name}(${data.uid})', MyColors.c333333, 15), Expanded( child: GestureDetector( onTap: () { submitApplication(data); }, behavior: HitTestBehavior.translucent, child: Container( alignment: Alignment.centerRight, child: Container( decoration: BoxDecoration( border: Border.all(color: MyColors.cFF4233, width: 1), borderRadius: BorderRadius.circular(14)), height: 28, width: 70, child: myText('申请加入', MyColors.cFF4233, 12), alignment: Alignment.center, ), ), ), ) ], ), ), Container( height: 0.5, color: MyColors.cF7F7F7, margin: EdgeInsets.only(left: 15, right: 15, top: 6), ) ], ); } orderStyle(SmartOrderBeanDataData data) { if (data.type == orderTypeThirdPlatform) { return Container( margin: EdgeInsets.symmetric(horizontal: 12), child: Row( children: [ Container( child: SvgPicture.asset( 'images/svg/第三方.svg', height: 45, width: 45, ), margin: EdgeInsets.only(right: 8), height: 60, width: 60, decoration: BoxDecoration( border: Border.all(color: MyColors.cEBEBEB, width: 1)), alignment: Alignment.center, ), Expanded( child: Container( height: 60, child: Column( children: [ MyViews() .myText('第三方订单(${data.uid})', MyColors.c333333, 13), MyViews() .myText('付款人:${data.buyerName}', MyColors.c333333, 13), Row( children: [ MyViews() .myText('¥${data.amount}', MyColors.cFF4233, 12), MyViews().myText( 'x${data.commodityCount}', MyColors.c999999, 12), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, ), ), ), ], ), ); } else if (data.type == orderTypeAnnualFee) { return Container( margin: EdgeInsets.symmetric(horizontal: 12), child: Row( children: [ Container( child: Image.asset( 'images/app_logo.png', height: 27, width: 27, ), margin: EdgeInsets.only(right: 8), height: 45, width: 45, decoration: BoxDecoration( border: Border.all(color: MyColors.cEBEBEB, width: 1)), alignment: Alignment.center, ), Expanded( child: Container( height: 45, child: Column( children: [ Row( children: [ MyViews().myText('平台年费', MyColors.c333333, 13), MyViews().myText( '付款人:${data.buyerName}(${data.buyerUid})', MyColors.c333333, 13), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), Row( children: [ MyViews() .myText('¥${data.amount}', MyColors.cFF4233, 12), MyViews().myText( 'x${data.commodityCount}', MyColors.c999999, 12), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, ), ), ), ], ), ); } else if (data.type == orderTypeAdvertise) { return Container( margin: EdgeInsets.symmetric(horizontal: 12), child: Row( children: [ Container( child: Image.asset( 'images/app_logo.png', height: 27, width: 27, ), margin: EdgeInsets.only(right: 8), height: 45, width: 45, decoration: BoxDecoration( border: Border.all(color: MyColors.cEBEBEB, width: 1)), alignment: Alignment.center, ), Expanded( child: Container( height: 45, child: Column( children: [ Row( children: [ MyViews().myText('广告费', MyColors.c333333, 13), MyViews().myText( '付款人:${data.buyerName}(${data.buyerUid})', MyColors.c333333, 13), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), Row( children: [ MyViews() .myText('¥${data.amount}', MyColors.cFF4233, 12), MyViews().myText( 'x${data.commodityCount}', MyColors.c999999, 12), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, ), ), ), ], ), ); } else if (data.type == orderTypeCommodity) { return Container( margin: EdgeInsets.only(left: 10, right: 10), child: Row( children: [ MyViews().netImg(imgURL(data.commodityCover), 82, 84, placeholder: 'images/svg/goodsDefImg.svg'), Expanded( child: Container( padding: EdgeInsets.only(left: 8), height: 82, child: Column( children: [ Text( '${data.commodityTitle}', style: TextStyle(color: MyColors.c333333, fontSize: 13), maxLines: 2, overflow: TextOverflow.ellipsis, softWrap: true, ), Row( children: [ Text( '¥${double.parse('${data.amount}').toStringAsFixed(2)}', style: TextStyle(color: MyColors.cFF4233, fontSize: 12), ), Text( 'x${data.commodityCount}', style: TextStyle(color: MyColors.c999999, fontSize: 12), ), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, ), Row( children: [ ClipRRect( child: MyViews() .netImg(imgURL('${data.buyerPic}'), 25, 25), borderRadius: BorderRadius.all(Radius.circular(12.5)), ), Container( margin: EdgeInsets.only(right: 5, left: 5), child: Text( '${data.buyerName}(${data.buyerUid})', style: TextStyle( color: MyColors.c333333, fontSize: 13, ), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), ), Container( decoration: BoxDecoration( border: Border.all(color: MyColors.cFF4233, width: 1), borderRadius: BorderRadius.all( Radius.circular(2), ), ), child: Text( '买家', style: TextStyle( color: MyColors.cFF4233, fontSize: 10, ), ), alignment: Alignment.center, padding: EdgeInsets.only(bottom: 2, left: 3, right: 3), ) ], ), ], crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ), ) ], ), ); } else { return Container( margin: EdgeInsets.only(left: 10, right: 10), child: Row( children: [ MyViews().netImg(imgURL(data.commodityCover), 82, 84, placeholder: 'images/svg/goodsDefImg.svg'), Expanded( child: Container( padding: EdgeInsets.only(left: 8), height: 82, child: Column( children: [ Text( '${data.commodityTitle}', style: TextStyle(color: MyColors.c333333, fontSize: 13), maxLines: 2, overflow: TextOverflow.ellipsis, softWrap: true, ), Row( children: [ Text( '¥${double.parse('${data.amount}').toStringAsFixed(2)}', style: TextStyle(color: MyColors.cFF4233, fontSize: 12), ), Text( 'x${data.commodityCount}', style: TextStyle(color: MyColors.c999999, fontSize: 12), ), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, ), Row( children: [ ClipRRect( child: MyViews() .netImg(imgURL('${data.buyerPic}'), 25, 25), borderRadius: BorderRadius.all(Radius.circular(12.5)), ), Container( margin: EdgeInsets.only(right: 5, left: 5), child: Text( '${data.buyerName}(${data.buyerUid})', style: TextStyle( color: MyColors.c333333, fontSize: 13, ), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), ), Container( decoration: BoxDecoration( border: Border.all(color: MyColors.cFF4233, width: 1), borderRadius: BorderRadius.all( Radius.circular(2), ), ), child: Text( '买家', style: TextStyle( color: MyColors.cFF4233, fontSize: 10, ), ), alignment: Alignment.center, padding: EdgeInsets.only(bottom: 2, left: 3, right: 3), ) ], ), ], crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ), ) ], ), ); } } void queryWhetherThereIsANumberOfPerspectives( MyShopBeanDataData data, StoreBeanDataData store, BuildContext context) { MyDio().query({ "key": "user_vp", "filters": { "conditions": [ "user_uid == ${MyCookie().getUID()}", "vp_key == $vpKeyXRay" ] }, "dims": userVpDims, "paging": [1, 2000] }, (response, hasError) { UserVpBeanEntity entity = UserVpBeanEntity().fromJson(json.decode(response.data.toString())); if (entity.data.data.length != 0) { MyTools().toPage(context, OtherPeopleSTurnoverPage(data), (then) {}); } else { // showSimpleDialog('你还未获取透视道具或道具用完,请先购买次数再查看。', context, () { // Navigator.pop(context); // MyShopBeanDataData shop = MyShopBeanDataData(); // shop.shopUid = store.uid; // shop.shopName = store.name; // shop.shopPic = store.picture; // MyTools().toPage( // context, PrivacyProtectionPropsPage(shop, vpKeyXRay), (then) {}); // }); MyShopBeanDataData shop = MyShopBeanDataData(); shop.shopUid = store.uid; shop.shopName = store.name; shop.shopPic = store.picture; MyTools().toPage( context, PrivacyProtectionPropsPage(shop, vpKeyXRay), (then) {}); } }, (error) {}); } Widget pubShopItem(var data, BuildContext context) { if (data is StoreBeanDataData) { return GestureDetector( onTap: () { MyShopBeanDataData sBean = MyShopBeanDataData(); sBean.shopName = data.name; sBean.shopPic = data.picture; sBean.shopUid = data.uid; sBean.ownerUid = data.ownerUid; sBean.ownerName = data.ownerName; sBean.ownerPic = data.ownerPic; sBean.privateShop = data.private; sBean.innerTrade = data.innerTrade; sBean.shopState = data.state; navigatorKey.currentState.push( MaterialPageRoute(builder: (context) => GangInPage(sBean, null))); }, behavior: HitTestBehavior.translucent, child: Container( margin: EdgeInsets.only(bottom: 5), child: Card( elevation: 2, shadowColor: MyColors.c21333333, child: Padding( padding: const EdgeInsets.all(10), child: Row( children: [ ClipRRect( child: MyViews().netImg(imgURL(data.picture), 70, 70, placeholder: 'images/svg/goodsDefImg.svg'), borderRadius: BorderRadius.circular(4), ), Expanded( child: Container( height: 70, margin: EdgeInsets.only(left: 10), child: Column( children: [ myText('${data.name}(${data.uid})', MyColors.c333333, 14), Text( '货帮介绍:${data.introduction}', style: TextStyle( color: MyColors.c666666, fontSize: 11), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), Row( children: [ Icon( Icons.location_on_outlined, size: 15, color: MyColors.c666666, ), Expanded( child: Text( '${data.address}', style: TextStyle( color: MyColors.c666666, fontSize: 10), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), ), ], ), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, ), ), ) ], ), ), ), ), ); } else if (data is AdBeanDataData) { return GestureDetector( onTap: () { MyTools().toPage(context, AdDetailsPage(data), (then) {}); }, behavior: HitTestBehavior.translucent, child: Container( margin: EdgeInsets.only(bottom: 5), child: Card( elevation: 2, shadowColor: MyColors.c21333333, child: Padding( padding: const EdgeInsets.only(top: 10, bottom: 10, left: 10), child: Row( children: [ ClipRRect( child: MyViews().netImg(imgURL(data.coverPath), 70, 70, placeholder: 'images/svg/goodsDefImg.svg'), borderRadius: BorderRadius.circular(4), ), Expanded( child: Container( height: 70, margin: EdgeInsets.only(left: 10), child: Column( children: [ Row( children: [ Expanded( child: myText( '${data.title}', MyColors.c333333, 14)), Container( decoration: BoxDecoration( color: MyColors.cADD358, borderRadius: BorderRadius.only( topLeft: Radius.circular(8), bottomLeft: Radius.circular(8), ), ), height: 16, width: 32, child: myText('推广', Colors.white, 9), alignment: Alignment.center, ), ], ), Container( margin: EdgeInsets.only(right: 10), child: Text( '${data.description}', style: TextStyle( color: MyColors.c666666, fontSize: 11), maxLines: 2, overflow: TextOverflow.ellipsis, softWrap: true, ), ), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, ), ), ) ], ), ), ), ), ); } } } Widget noData() { return Center( child: Column( children: [ Container( child: Image.asset('images/no_data.png'), alignment: Alignment.center, margin: EdgeInsets.only(top: 40), ), Container( child: MyViews().myText('暂无信息', MyColors.c999999, 16), height: 100, alignment: Alignment.topCenter, ) ], mainAxisAlignment: MainAxisAlignment.center, ), ); } showPayDialog(SmartOrderBeanDataData data, BuildContext context, onTap) { showDialog( context: context, builder: (BuildContext context) { return Material( color: Colors.black12, child: Center( child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(16), color: Colors.white, ), height: 207, margin: EdgeInsets.symmetric(horizontal: 18), padding: EdgeInsets.symmetric(horizontal: 8, vertical: 12), child: Column( children: [ Row( children: [ Container( decoration: BoxDecoration( border: Border.all(color: MyColors.cEBEBEB, width: 1), ), child: SvgPicture.asset( 'images/svg/支付商品.svg', height: 28, width: 28, ), height: 45, width: 45, alignment: Alignment.center, ), Container( height: 45, child: Column( children: [ MyViews().myText( '确认支付订单(${data.uid})', MyColors.c333333, 13), MyViews() .myText('¥${data.amount}', MyColors.cFF4233, 12), ], crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, ), margin: EdgeInsets.only(left: 10), ) ], ), Container( height: 0.5, color: MyColors.cE7E7E7, ), Row( children: [ MyViews().myText('付款人:', MyColors.c333333, 13), Container( child: ClipRRect( child: MyViews().netImg(imgURL(data.buyerPic), 23, 23), borderRadius: BorderRadius.circular(23), ), margin: EdgeInsets.symmetric(horizontal: 8), ), MyViews().myText( '${data.buyerName}${data.buyerUid == 0 ? '' : "(${data.buyerUid})"}', MyColors.c333333, 13), ], ), Container( height: 0.5, color: MyColors.cE7E7E7, ), Row( children: [ MyViews().myText('收款人:', MyColors.c333333, 13), Container( child: ClipRRect( child: MyViews().netImg(imgURL(data.sellerPic), 23, 23), borderRadius: BorderRadius.circular(23), ), margin: EdgeInsets.symmetric(horizontal: 8), ), MyViews().myText( '${data.sellerName}${data.sellerUid == 0 ? '' : '(${data.sellerUid})'}', MyColors.c333333, 13), ], ), Container( height: 0.5, color: MyColors.cE7E7E7, ), Container( margin: EdgeInsets.symmetric(horizontal: 10), child: Row( children: [ Expanded( child: GestureDetector( onTap: () { Navigator.pop(context); }, behavior: HitTestBehavior.translucent, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.only( topLeft: Radius.circular(20), bottomLeft: Radius.circular(20), ), border: Border.all( color: MyColors.cFF4233, width: 1.1), color: Colors.white), child: MyViews().myText('取消', MyColors.cFF4233, 14), height: 40, alignment: Alignment.center, ), ), ), Expanded( child: GestureDetector( behavior: HitTestBehavior.translucent, onTap: onTap, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.only( topRight: Radius.circular(20), bottomRight: Radius.circular(20), ), color: MyColors.cFF4233), height: 40, child: MyViews().myText('确定', Colors.white, 14), alignment: Alignment.center, ), ), ) ], ), ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ), ), ); }, ); } showSimpleDialog(String content, BuildContext context, onTap) { showDialog( context: context, builder: (BuildContext context) { return Material( color: Colors.black12, child: Center( child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(16), color: Colors.white, ), height: 180, margin: EdgeInsets.symmetric(horizontal: 18), padding: EdgeInsets.symmetric(horizontal: 8, vertical: 12), child: Column( children: [ Expanded( child: Center( child: Container( child: MyViews().myText(content, MyColors.c333333, 14), margin: EdgeInsets.symmetric(horizontal: 20), ), ), ), Container( height: 0.5, color: MyColors.cE7E7E7, margin: EdgeInsets.only(bottom: 12), ), Container( margin: EdgeInsets.symmetric(horizontal: 10), child: Row( children: [ Expanded( child: GestureDetector( onTap: () { Navigator.pop(context); }, behavior: HitTestBehavior.translucent, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.only( topLeft: Radius.circular(20), bottomLeft: Radius.circular(20), ), border: Border.all( color: MyColors.cFF4233, width: 1.1), color: Colors.white), child: MyViews().myText('取消', MyColors.cFF4233, 14), height: 40, alignment: Alignment.center, ), ), ), Expanded( child: GestureDetector( behavior: HitTestBehavior.translucent, onTap: onTap, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.only( topRight: Radius.circular(20), bottomRight: Radius.circular(20), ), color: MyColors.cFF4233), height: 40, child: MyViews().myText('确定', Colors.white, 14), alignment: Alignment.center, ), ), ) ], ), ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ), ), ); }, ); } updateDialog(AndroidAppVersionBeanData data, BuildContext context) { bool startUpdate = false; bool downloadCompleted = false; String filePath = ''; int p = 0; EventBus().off('允许安装'); EventBus().off('更新进度条'); showDialog( context: context, builder: (BuildContext context) { return WillPopScope( onWillPop: () { return Future.value(false); }, child: StreamBuilder(builder: (context, snapshot) { return Material( color: Colors.black12, child: Center( child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(16), color: Colors.white, ), height: 165, margin: EdgeInsets.symmetric(horizontal: 18), padding: EdgeInsets.symmetric(horizontal: 8, vertical: 12), child: StatefulBuilder( builder: (BuildContext context, void Function(void Function()) setState) { EventBus().on('更新进度条', (arg) { p = arg; setState(() {}); }); EventBus().on('允许安装', (arg) { downloadCompleted = true; filePath = arg; setState(() {}); }); if (startUpdate) { return Column( children: [ Container( height: 88, child: Column( children: [ Container( child: MyViews() .myText('更新中...', MyColors.c333333, 16), ), SizedBox( height: 15, child: ClipRRect( borderRadius: BorderRadius.circular(7.5), child: LinearProgressIndicator( backgroundColor: Colors.grey[200], valueColor: AlwaysStoppedAnimation( MyColors.cFF4233), value: downloadCompleted ? 1 : NumUtil.divide(p, 100), ), ), ), ], mainAxisAlignment: MainAxisAlignment.spaceAround, ), ), Container( height: 0.5, color: MyColors.cE7E7E7, margin: EdgeInsets.only(bottom: 12), ), Container( margin: EdgeInsets.symmetric(horizontal: 20), child: GestureDetector( behavior: HitTestBehavior.translucent, onTap: () { if (downloadCompleted) { installApk(filePath); } }, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), color: downloadCompleted ? MyColors.cFF4233 : MyColors.c999999), height: 40, child: MyViews().myText('安装', Colors.white, 14), alignment: Alignment.center, ), ), ) ], mainAxisAlignment: MainAxisAlignment.center, ); } else { return Column( children: [ Container( height: 88, child: MyViews().myText( data.force ? '检查到新版本(v${data.version}),请更新' : '检查到新版本(v${data.version}),请问是否更新', MyColors.c333333, 14), margin: EdgeInsets.symmetric(horizontal: 20), alignment: Alignment.center, ), Container( height: 0.5, color: MyColors.cE7E7E7, margin: EdgeInsets.only(bottom: 12), ), data.force ? Container( margin: EdgeInsets.symmetric(horizontal: 10), child: Expanded( child: GestureDetector( behavior: HitTestBehavior.translucent, onTap: () { if (Platform.isAndroid) { downloadAPK(data, context); startUpdate = true; setState(() {}); } else if (Platform.isIOS) { LaunchReview.launch( writeReview: false, iOSAppId: appStoreID); } else { Navigator.pop(context); } }, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), color: MyColors.cFF4233), height: 40, child: MyViews() .myText('立即更新', Colors.white, 14), alignment: Alignment.center, ), ), ), ) : Container( margin: EdgeInsets.symmetric(horizontal: 10), child: Row( children: [ Expanded( child: GestureDetector( onTap: () { if (data.force) { EventBus().off('允许安装'); EventBus().off('更新进度条'); SystemNavigator.pop(); } else { EventBus().off('允许安装'); EventBus().off('更新进度条'); Navigator.pop(context); } }, behavior: HitTestBehavior.translucent, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.only( topLeft: Radius.circular(20), bottomLeft: Radius.circular(20), ), border: Border.all( color: MyColors.cFF4233, width: 1.1), color: Colors.white), child: MyViews().myText( '暂不更新', MyColors.cFF4233, 14), height: 40, alignment: Alignment.center, ), ), ), Expanded( child: GestureDetector( behavior: HitTestBehavior.translucent, onTap: () { if (Platform.isAndroid) { downloadAPK(data, context); startUpdate = true; setState(() {}); } else if (Platform.isIOS) { LaunchReview.launch( writeReview: false, iOSAppId: appStoreID); } else { Navigator.pop(context); } }, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.only( topRight: Radius.circular(20), bottomRight: Radius.circular(20), ), color: MyColors.cFF4233), height: 40, child: MyViews().myText( '立即更新', Colors.white, 14), alignment: Alignment.center, ), ), ) ], ), ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ); } }, ), ), ), ); }), ); }, ); } downloadAPK(AndroidAppVersionBeanData data, BuildContext context) async { Directory storageDir = await getExternalStorageDirectory(); String storagePath = storageDir.path; File file = new File( '$storagePath/${PinyinHelper.getShortPinyin(MyCookie().packageInfo.appName)}.apk'); if (!file.existsSync()) { file.createSync(); } print(apkURL(data.download)); Dio().download(apkURL(data.download), file.path, onReceiveProgress: (int count, int total) { EventBus().emit('更新进度条', ((count / (data.size)) * 100).floor()); }).then((value) { print('下载完成'); EventBus().emit('允许安装', file.path); }).catchError((e) { print(e); Navigator.pop(context); EventBus().off('允许安装'); EventBus().off('更新进度条'); EasyLoading.showToast('下载失败'); }); } Widget advertisingItems(BuildContext context, AdBeanDataData data) { double w = (MediaQuery.of(context).size.width - 47) / 2; List colors = [ MyColors.cADD358, MyColors.cFF4233, MyColors.cFF88B4, MyColors.cFFCD00 ]; List types = ['投放中', '未付费', '已结束', '未投放']; int typeIndex; if (data.paid == false) { typeIndex = 1; } else { var sT = DateTime.parse(data.startDate); var eT = sT.add(Duration(days: data.days)); if (sT.isBefore(DateTime.now()) && eT.isAfter(DateTime.now())) { typeIndex = 0; } else if (sT.isAfter(DateTime.now())) { typeIndex = 3; } else if (eT.isBefore(DateTime.now())) { typeIndex = 2; } } return Card( child: Column( children: [ ClipRRect( child: Container( child: Stack( children: [ MyViews().netImg(imgURL(data.coverPath), w, w, placeholder: 'images/svg/goodsDefImg.svg'), Positioned( right: 0, top: 5, child: Container( decoration: BoxDecoration( color: colors[typeIndex], borderRadius: BorderRadius.only( topLeft: Radius.circular(7), bottomLeft: Radius.circular(7), ), ), height: 14, width: 32, child: MyViews().myText(types[typeIndex], Colors.white, 8), alignment: Alignment.center, ), ) ], ), height: w, width: w, ), borderRadius: BorderRadius.only( topRight: Radius.circular(4), topLeft: Radius.circular(4)), ), Expanded( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 10), child: Column( children: [ Text( data.title, style: TextStyle(color: MyColors.c333333, fontSize: 12), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), Text( '发布时间:${data.createTime}', style: TextStyle(color: MyColors.c999999, fontSize: 9), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), Text( '开始时间:${data.startDate}', style: TextStyle(color: MyColors.c999999, fontSize: 9), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), Text( '结束时间:${DateTime.parse(data.startDate).add(Duration(days: data.days)).toString().substring(0, 10)}', style: TextStyle(color: MyColors.c999999, fontSize: 9), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), ], crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ), ) ], crossAxisAlignment: CrossAxisAlignment.start, ), ); } Future installApk(String url) async { InstallPlugin.installApk(url, MyCookie().packageInfo.packageName) .then((result) { print('install apk $result'); }).catchError((error) { print('install apk error: $error'); }); }