import 'dart:convert'; import 'dart:io'; import 'dart:math' as math; import 'package:amap_flutter_base/amap_flutter_base.dart'; 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/my_tools/providers.dart'; import 'package:bbyyy/my_tools/role_permissions.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/pay_page/order_information_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 'package:provider/provider.dart'; import '../beans/complain_bean_entity.dart'; import '../paegs/other_people_s_turnover_page/other_people_s_turnover_page.dart'; import 'const.dart'; import 'dims.dart'; import 'map_util.dart'; class MyViews { Widget netImg(String path, double h, double w, {String placeholder = 'images/svg/缺省头像.svg'}) { return CachedNetworkImage( imageUrl: path, height: h, width: w, memCacheHeight: (h.floor())*2, memCacheWidth: (w.floor())*2, 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, ), ), ); } } //我的订单、店铺订单item Widget getNoPayGoodsItem(SmartOrderBeanDataData data, BuildContext context, int ownerUid, int role) { 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: [ 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}(${hideUID(data.sellerUid.toString())})', style: TextStyle( color: MyColors.c333333, fontSize: 14, ), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), ),],), Container( margin: EdgeInsets.only(right: 10), child: Text(orderST(data),style: TextStyle( color: MyColors.c333333, fontSize: 14,),), ), ],mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ), 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) || paymentAuthority(role)) { MyTools().toPage( context, OrderInformationPage( false, orderType: data.type, amount: data.amount, uid: data.uid, buyerUid: data.buyerUid, buyerName: data.buyerName, buyerPic: data.buyerPic, commodityCount: data.commodityCount, commodityTitle: data.commodityTitle, commodityCover: data.commodityCover, sellName: data.sellerName, sellPic: data.sellerPic, sellUid: data.sellerUid, ), (then) { if (then is int) { EventBus().emit('刷新未付订单'); } }); // showPayDialog(data, context, () { // Navigator.pop(context); // // // MyTools().toPage(context, // // PayPage(data.uid, false, data.amount), (then) {}); // }); } 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, ), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), 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: flowIcon(flow), borderRadius: BorderRadius.all(Radius.circular(25)), ), margin: EdgeInsets.only(right: 12), ), Expanded( child: Column( children: [ Row( children: [ Expanded( child: Text( flow.traderUid == 0 ? '平台' : flow.traderName, style: TextStyle( color: MyColors.c333333, fontSize: 14), maxLines: 1, overflow: TextOverflow.ellipsis, softWrap: true, ), ), Text( '${flow.paidAmount.toStringAsFixed(2)}', style: TextStyle( color: flow.paidAmount > 0 ? MyColors.cff3646 : MyColors.c237C02, fontSize: 15, fontWeight: FontWeight.bold), ), ], mainAxisAlignment: MainAxisAlignment.spaceBetween, ), Row( children: [ Text( flow.traderUid == 0 ? "" : 'ID:${hideUID(flow.traderUid.toString())}', 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)}${flow.type==flowTypeWithdraw?'(${flow.remark})':''}', '${flow.remark}', style: TextStyle(color: MyColors.c666666, fontSize: 12), ), Text( '${balanceDisplay(flow.userBalance).toStringAsFixed(2)}', 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: [ 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), ), ), Expanded( child: Text( '${data.userName} 申请加入你的货帮', style: TextStyle(color: MyColors.c333333, fontSize: 15), overflow: TextOverflow.ellipsis, softWrap: true, maxLines: 1, ), ), 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} ${store.ownerUid == MyCookie().getUID() ? '(${data.userUid})' : ''}', MyColors.c333333, 15), Visibility( visible: data.role != shopUserMember, child: Container( decoration: BoxDecoration( color: MyColors.cFFCD00, borderRadius: BorderRadius.circular(8)), height: 16, padding: EdgeInsets.symmetric(horizontal: 4), child: myText(roleText(data.role), Colors.white, 10), alignment: Alignment.center, margin: EdgeInsets.only(left: 5), ), ) ], ), Visibility( // visible: data.role != shopUserOwner && // data.userUid != MyCookie().getUID(), visible: false, 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: () { if(data.state==shopStateNormal){ submitApplication(data); }else{ showToast('该货帮暂不可加入'); } }, 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: 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('平台服务费', MyColors.c333333, 13), MyViews().myText( '付款人:${data.buyerName}(${hideUID(data.buyerUid.toString())})', 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 == orderTypeAdvertise) { //平台广告订单 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('广告费', MyColors.c333333, 13), MyViews().myText( '付款人:${data.buyerName}(${hideUID(data.buyerUid.toString())})', 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 == orderTypeCommodity) { //商品订单 return Container( margin: EdgeInsets.only(left: 10, right: 10), child: Row( children: [ MyViews().netImg(imgURL(data.commodityCover), 60, 60, placeholder: 'images/svg/goodsDefImg.svg'), Expanded( child: Container( padding: EdgeInsets.only(left: 8), height: 60, 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}(${hideUID(data.buyerUid.toString())})', 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 if (data.type == orderTypeVirtualProduct) { //虚拟物品 return Container( margin: EdgeInsets.only(left: 10, right: 10), 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( padding: EdgeInsets.only(left: 8), height: 60, child: Column( children: [ Text( '虚拟道具', 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}(${hideUID(data.buyerUid.toString())})', 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 if (data.type == orderTypeScancodeAilyPay) { //扫码收款 return Container( margin: EdgeInsets.only(left: 10, right: 10), child: Row( children: [ Container( child: Icon( Icons.qr_code_outlined, color: Colors.white, ), margin: EdgeInsets.only(right: 8), height: 60, width: 60, decoration: BoxDecoration( color: MyColors.cFF4233, border: Border.all(color: MyColors.cEBEBEB, width: 1)), alignment: Alignment.center, ), Expanded( child: Container( padding: EdgeInsets.only(left: 8), height: 60, child: Column( children: [ Text( '收款码收款', style: TextStyle(color: MyColors.c333333, fontSize: 13), maxLines: 2, overflow: TextOverflow.ellipsis, softWrap: true, ), Text( '¥${double.parse('${data.amount}').toStringAsFixed(2)}', style: TextStyle(color: MyColors.cFF4233, fontSize: 12), ), ], crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, ), ), ) ], ), ); } else if (data.type == orderTypeOfflineTransfer || data.type == orderTypeOfflinePay||data.type==orderTypeShopOwnerCreated) { //线下付款 return Container( margin: EdgeInsets.only(left: 10, right: 10), 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( padding: EdgeInsets.only(left: 8), height: 60, child: Column( children: [ Text( data.type == orderTypeOfflineTransfer ? '到店付款' : '线下收款', 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}'), 20, 20), borderRadius: BorderRadius.all(Radius.circular(10)), ), Container( margin: EdgeInsets.only(right: 5, left: 5), child: Text( '${data.buyerName}(${hideUID(data.buyerUid.toString())})', 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}(${hideUID(data.buyerUid.toString())})', 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( decoration: BoxDecoration( boxShadow: [ BoxShadow( color: MyColors.c7FE1E1E1, blurRadius: 5.0, ), ], color: Colors.white, borderRadius: BorderRadius.circular(4), ), margin: EdgeInsets.only(bottom: 6.5, left: 16, right: 16, top: 6.5), child: Padding( padding: const EdgeInsets.all(10), child: Row( children: [ Container( decoration: BoxDecoration(border: Border.all(color: MyColors.cE7E7E7,),borderRadius: BorderRadius.circular(4)), child: 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: [ Expanded( child: GestureDetector( onTap: () { if (data.latitude == 0) { showToast('该店坐标有误'); return; } mapNavigationPopup( data.latitude, data.longitude, context); }, behavior: HitTestBehavior.translucent, child: 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, ), ), ], ), ), ), if (data.longitude != 0 && context.watch().myLatLng != null) Text( '${(AMapTools.distanceBetween(LatLng(data.latitude, data.longitude), LatLng(MyCookie().location.latitude, MyCookie().location.longitude)) / 1000).toStringAsFixed(3)}km', style: TextStyle( fontSize: 10, color: MyColors.c666666), ) ], ), ], 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: 6.5, left: 16, right: 16, top: 6.5), decoration: BoxDecoration( boxShadow: [ BoxShadow( color: MyColors.c7FE1E1E1, blurRadius: 5.0, ), ], color: Colors.white, borderRadius: BorderRadius.circular(4), ), 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, ), ], ), Visibility( visible: data.mobile.isNotEmpty, child: Container( margin: EdgeInsets.only(right: 10), child: Text( '联系电话:${data.mobile}', style: TextStyle( color: MyColors.c666666, fontSize: 11), maxLines: 2, overflow: TextOverflow.ellipsis, softWrap: true, ), ), ), 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, ), ), ) ], ), ), ), ); } } void mapNavigationPopup( double latitude, double longitude, BuildContext context, ) { showModalBottomSheet( isScrollControlled: true, shape: RoundedRectangleBorder( //圆角 borderRadius: BorderRadius.vertical(top: Radius.circular(15)), ), builder: (BuildContext context) { return AnimatedPadding( //showModalBottomSheet 键盘弹出时自适应 padding: MediaQuery.of(context).viewInsets, //边距(必要) duration: const Duration(milliseconds: 100), //时常 (必要) child: Container( // height: 180, constraints: BoxConstraints( minHeight: 90, //设置最小高度(必要) maxHeight: MediaQuery.of(context).size.height / 1.5, //设置最大高度(必要) ), padding: EdgeInsets.only(top: 20, bottom: 20), decoration: BoxDecoration( borderRadius: BorderRadius.vertical(top: Radius.circular(15)), color: Colors.white), //圆角 child: ListView( padding: EdgeInsets.all(0), shrinkWrap: true, children: [ Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ GestureDetector( onTap: () { MapUtil.gotoAMap(longitude, latitude); }, behavior: HitTestBehavior.translucent, child: Container( height: 50, child: Column( children: [ Text( '高德地图', style: TextStyle( color: MyColors.c333333, fontSize: 16), ), Container( height: 0.5, color: Colors.grey[200], ) ], mainAxisAlignment: MainAxisAlignment.spaceAround, ), ), ), GestureDetector( onTap: () { MapUtil.gotoBaiduMap(longitude, latitude); }, behavior: HitTestBehavior.translucent, child: Container( height: 50, child: Column( children: [ Text( '百度地图', style: TextStyle( color: MyColors.c333333, fontSize: 16), ), Container( height: 0.5, color: Colors.grey[200], ) ], mainAxisAlignment: MainAxisAlignment.spaceAround, ), ), ), GestureDetector( onTap: () { MapUtil.gotoTencentMap(longitude, latitude); }, behavior: HitTestBehavior.translucent, child: Container( height: 50, child: Column( children: [ Text( '腾讯地图', style: TextStyle( color: MyColors.c333333, fontSize: 16), ), Container( height: 0.5, color: Colors.grey[200], ) ], mainAxisAlignment: MainAxisAlignment.spaceAround, ), ), ), if (Platform.isIOS) GestureDetector( onTap: () { MapUtil.gotoAppleMap(longitude, latitude); }, behavior: HitTestBehavior.translucent, child: Container( height: 50, child: Column( children: [ Text( '苹果地图', style: TextStyle( color: MyColors.c333333, fontSize: 16), ), Container( height: 0.5, color: Colors.grey[200], ) ], mainAxisAlignment: MainAxisAlignment.spaceAround, ), ), ), ], ) ], ), ), ); }, context: context); } Widget flowIcon(FlowBeanDataDataRecords flow ) { if(flow.traderUid == 0){ return Image.asset( 'images/app_logo.png', width: 50, height: 50, ); }else if(flow.traderUid == 1){ return Image.asset( 'images/Alipay.png', width: 50, height: 50, ); } else if(flow.traderUid == 2){ return Image.asset( 'images/WeChat.png', width: 50, height: 50, ); } else{ return MyViews().netImg(imgURL(flow.traderPic), 50, 50); } } } 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 ? '' : "(${hideUID(data.buyerUid.toString())})"}', 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 ? '' : '(${hideUID(data.sellerUid.toString())})'}', 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}),本次属于强制更新,如不同意更新,将退出APP' : '检查到新版本(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 ? 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( margin: EdgeInsets.symmetric(horizontal: 10), decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), color: MyColors.cFF4233), height: 40, child: MyViews() .myText('立即更新', Colors.white, 14), alignment: Alignment.center, ), ), ) : 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( margin: EdgeInsets.only(left: 10), 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( margin: EdgeInsets.only(right: 10), 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'); }); }