import 'dart:convert'; import 'package:bbyyy/beans/smart_order_bean_entity.dart'; import 'package:bbyyy/https/MyDio.dart'; import 'package:bbyyy/https/my_request.dart'; import 'package:bbyyy/my_tools/const.dart'; import 'package:bbyyy/my_tools/dims.dart'; import 'package:bbyyy/my_tools/event_bus.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/my_views.dart'; import 'package:flutter/material.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:flutter_svg/svg.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; class OrderPage extends StatefulWidget { int index; OrderPage({this.index = 0}); @override _OrderPageState createState() => _OrderPageState(); } class _OrderPageState extends State { int selectedIndex = 0; List orders = []; RefreshController controller = RefreshController(initialRefresh: true); int page = 1; @override void initState() { // TODO: implement initState super.initState(); EventBus().on('刷新未付订单', (arg) { controller.requestRefresh();}); selectedIndex = widget.index; } @override void dispose() { // TODO: implement dispose super.dispose(); EventBus().off('刷新未付订单'); checkUnpaidThirdPartyOrders(); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: MyColors.cE7E7E7, body: Column( children: [ MyViews().myAppBar('订单', context, []), Container( height: 40, color: Colors.white, child: Row( children: [ GestureDetector( onTap: () { setState(() { selectedIndex = 0; page = 1; controller.requestRefresh(); }); }, behavior: HitTestBehavior.translucent, child: Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Column( children: [ Text( '未收', style: TextStyle( color: selectedIndex == 0 ? MyColors.cFF4233 : MyColors.c666666, fontSize: 15), ), Container( height: 10, child: Visibility( child: SvgPicture.asset('images/svg/tab.svg'), visible: selectedIndex == 0, ), ) ], mainAxisAlignment: MainAxisAlignment.end, ), ), ), GestureDetector( onTap: () { setState(() { selectedIndex = 1; page = 1; controller.requestRefresh(); }); }, behavior: HitTestBehavior.translucent, child: Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Column( children: [ Text( '已收', style: TextStyle( color: selectedIndex == 1 ? MyColors.cFF4233 : MyColors.c666666, fontSize: 15), ), Container( height: 10, child: Visibility( child: SvgPicture.asset('images/svg/tab.svg'), visible: selectedIndex == 1, ), ) ], mainAxisAlignment: MainAxisAlignment.end, ), ), ), GestureDetector( onTap: () { setState(() { selectedIndex = 2; page = 1; controller.requestRefresh(); }); }, behavior: HitTestBehavior.translucent, child: Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Column( children: [ Text( '未付', style: TextStyle( color: selectedIndex == 2 ? MyColors.cFF4233 : MyColors.c666666, fontSize: 15), ), Container( height: 10, child: Visibility( child: SvgPicture.asset('images/svg/tab.svg'), visible: selectedIndex == 2, ), ) ], mainAxisAlignment: MainAxisAlignment.end, ), ), ) ], mainAxisAlignment: MainAxisAlignment.spaceAround, ), ), Expanded( child: SmartRefresher( controller: controller, onLoading: onLoading, onRefresh: onRefresh, enablePullUp: true, enablePullDown: true, child: orders.length == 0 ? SingleChildScrollView(child: noData()) : ListView.builder( itemBuilder: (c, index) { return Slidable( child: MyViews() .getNoPayGoodsItem(orders[index], context, -1,-1), actionPane: SlidableDrawerActionPane(), enabled: selectedIndex == 0 || (orders[index].type == orderTypeOfflineTransfer && orders[index].buyerUid == MyCookie().getUID())||orders[index].buyerUid==MyCookie().getUID(), actionExtentRatio: 0.25, secondaryActions: [ SlideAction( child: Container( child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(30), color: MyColors.cFF4233, ), height: 60,width: 60, child: SvgPicture.asset('images/svg/del.svg',height: 40,width: 40,), alignment: Alignment.center, ), ), onTap: (){ showSimpleDialog( '将删除订单(${orders[index].uid})', context, () { Navigator.pop(context); deleteOrder(orders[index]); }); }, ) ], ); }, itemCount: orders.length, padding: EdgeInsets.only(top: 10), ), ), ), ], ), ); } void onLoading() { page++; checkingOrder(); } void onRefresh() { page = 1; checkingOrder(); } checkingOrder() { var conditions = []; if (selectedIndex == 0) { conditions.add("state == $orderStateUnpaid"); conditions.add('seller_uid == ${MyCookie().getUID()}'); } else if (selectedIndex == 1) { conditions.add("state == $orderStatePaid"); conditions.add('seller_uid == ${MyCookie().getUID()}'); } else { conditions.add("state == $orderStateUnpaid"); conditions.add('buyer_name LIKE ${MyCookie().getName()}'); } MyDio().query({ "key": "order", "filters": {"conditions": conditions}, "dims": orderDims, "paging": [page, 20], "order_by": ["create_time,DESC"] }, (response, hasError) { if (!hasError) { SmartOrderBeanEntity entity = SmartOrderBeanEntity() .fromJson(json.decode(response.data.toString())); if (page == 1) { orders.clear(); } orders.addAll(entity.data.data); setState(() {}); } endRe(controller); }, (error) {}); } void deleteOrder(SmartOrderBeanDataData order) { MyDio().del({ 'key': 'order', 'ids': [order.id] }, (response, hasError) { if (!hasError) { orders.remove(order); setState(() {}); } }, (error) {}); } }