order_page.dart 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. import 'dart:convert';
  2. import 'package:bbyyy/beans/smart_order_bean_entity.dart';
  3. import 'package:bbyyy/https/MyDio.dart';
  4. import 'package:bbyyy/my_tools/const.dart';
  5. import 'package:bbyyy/my_tools/dims.dart';
  6. import 'package:bbyyy/my_tools/event_bus.dart';
  7. import 'package:bbyyy/my_tools/my_colors.dart';
  8. import 'package:bbyyy/my_tools/my_cookie.dart';
  9. import 'package:bbyyy/my_tools/my_tools.dart';
  10. import 'package:bbyyy/my_tools/my_views.dart';
  11. import 'package:flutter/material.dart';
  12. import 'package:flutter_slidable/flutter_slidable.dart';
  13. import 'package:flutter_svg/svg.dart';
  14. import 'package:pull_to_refresh/pull_to_refresh.dart';
  15. class OrderPage extends StatefulWidget {
  16. @override
  17. _OrderPageState createState() => _OrderPageState();
  18. }
  19. class _OrderPageState extends State<OrderPage> {
  20. int selectedIndex = 0;
  21. List<SmartOrderBeanDataData> orders = [];
  22. RefreshController controller = RefreshController(initialRefresh: true);
  23. int page = 1;
  24. @override
  25. void initState() {
  26. // TODO: implement initState
  27. super.initState();
  28. EventBus().on('刷新未付订单', (arg) { controller.requestRefresh();});
  29. }
  30. @override
  31. void dispose() {
  32. // TODO: implement dispose
  33. super.dispose();
  34. EventBus().off('刷新未付订单');
  35. }
  36. @override
  37. Widget build(BuildContext context) {
  38. return Scaffold(
  39. backgroundColor: MyColors.cE7E7E7,
  40. body: Column(
  41. children: [
  42. MyViews().myAppBar('订单', context, []),
  43. Container(
  44. height: 40,
  45. color: Colors.white,
  46. child: Row(
  47. children: [
  48. GestureDetector(
  49. onTap: () {
  50. setState(() {
  51. selectedIndex = 0;
  52. page = 1;
  53. controller.requestRefresh();
  54. });
  55. },
  56. behavior: HitTestBehavior.translucent,
  57. child: Padding(
  58. padding: EdgeInsets.only(left: 10, right: 10),
  59. child: Column(
  60. children: [
  61. Text(
  62. '未收',
  63. style: TextStyle(
  64. color: selectedIndex == 0
  65. ? MyColors.cFF4233
  66. : MyColors.c666666,
  67. fontSize: 15),
  68. ),
  69. Container(
  70. height: 10,
  71. child: Visibility(
  72. child: SvgPicture.asset('images/svg/tab.svg'),
  73. visible: selectedIndex == 0,
  74. ),
  75. )
  76. ],
  77. mainAxisAlignment: MainAxisAlignment.end,
  78. ),
  79. ),
  80. ),
  81. GestureDetector(
  82. onTap: () {
  83. setState(() {
  84. selectedIndex = 1;
  85. page = 1;
  86. controller.requestRefresh();
  87. });
  88. },
  89. behavior: HitTestBehavior.translucent,
  90. child: Padding(
  91. padding: EdgeInsets.only(left: 10, right: 10),
  92. child: Column(
  93. children: [
  94. Text(
  95. '已收',
  96. style: TextStyle(
  97. color: selectedIndex == 1
  98. ? MyColors.cFF4233
  99. : MyColors.c666666,
  100. fontSize: 15),
  101. ),
  102. Container(
  103. height: 10,
  104. child: Visibility(
  105. child: SvgPicture.asset('images/svg/tab.svg'),
  106. visible: selectedIndex == 1,
  107. ),
  108. )
  109. ],
  110. mainAxisAlignment: MainAxisAlignment.end,
  111. ),
  112. ),
  113. ),
  114. GestureDetector(
  115. onTap: () {
  116. setState(() {
  117. selectedIndex = 2;
  118. page = 1;
  119. controller.requestRefresh();
  120. });
  121. },
  122. behavior: HitTestBehavior.translucent,
  123. child: Padding(
  124. padding: EdgeInsets.only(left: 10, right: 10),
  125. child: Column(
  126. children: [
  127. Text(
  128. '未付',
  129. style: TextStyle(
  130. color: selectedIndex == 2
  131. ? MyColors.cFF4233
  132. : MyColors.c666666,
  133. fontSize: 15),
  134. ),
  135. Container(
  136. height: 10,
  137. child: Visibility(
  138. child: SvgPicture.asset('images/svg/tab.svg'),
  139. visible: selectedIndex == 2,
  140. ),
  141. )
  142. ],
  143. mainAxisAlignment: MainAxisAlignment.end,
  144. ),
  145. ),
  146. )
  147. ],
  148. mainAxisAlignment: MainAxisAlignment.spaceAround,
  149. ),
  150. ),
  151. Expanded(
  152. child: SmartRefresher(
  153. controller: controller,
  154. onLoading: onLoading,
  155. onRefresh: onRefresh,
  156. enablePullUp: true,
  157. enablePullDown: true,
  158. child: orders.length == 0
  159. ? SingleChildScrollView(child: noData())
  160. : ListView.builder(
  161. itemBuilder: (c, index) {
  162. return Slidable(
  163. child: MyViews()
  164. .getNoPayGoodsItem(orders[index], context, -1),
  165. actionPane: SlidableDrawerActionPane(),
  166. enabled: selectedIndex == 0 || (orders[index].type == orderTypeOfflineTransfer && orders[index].buyerUid == MyCookie().getUID()),
  167. actionExtentRatio: 0.25,
  168. secondaryActions: <Widget>[
  169. SlideAction(
  170. child: Container(
  171. child: Container(
  172. decoration: BoxDecoration(
  173. borderRadius: BorderRadius.circular(30),
  174. color: MyColors.cFF4233,
  175. ),
  176. height: 60,width: 60,
  177. child: SvgPicture.asset('images/svg/del.svg',height: 40,width: 40,),
  178. alignment: Alignment.center,
  179. ),
  180. ),
  181. onTap: (){
  182. showSimpleDialog(
  183. '将删除订单(${orders[index].uid})', context,
  184. () {
  185. Navigator.pop(context);
  186. deleteOrder(orders[index]);
  187. });
  188. },
  189. )
  190. ],
  191. );
  192. },
  193. itemCount: orders.length,
  194. padding: EdgeInsets.only(top: 10),
  195. ),
  196. ),
  197. ),
  198. ],
  199. ),
  200. );
  201. }
  202. void onLoading() {
  203. page++;
  204. checkingOrder();
  205. }
  206. void onRefresh() {
  207. page = 1;
  208. checkingOrder();
  209. }
  210. checkingOrder() {
  211. var conditions = [];
  212. if (selectedIndex == 0) {
  213. conditions.add("state == $orderStateUnpaid");
  214. conditions.add('seller_uid == ${MyCookie().getUID()}');
  215. } else if (selectedIndex == 1) {
  216. conditions.add("state == $orderStatePaid");
  217. conditions.add('seller_uid == ${MyCookie().getUID()}');
  218. } else {
  219. conditions.add("state == $orderStateUnpaid");
  220. conditions.add('buyer_name LIKE ${MyCookie().getName()}');
  221. }
  222. MyDio().query({
  223. "key": "order",
  224. "filters": {"conditions": conditions},
  225. "dims": orderDims,
  226. "paging": [page, 20],
  227. "order_by": ["create_time,DESC"]
  228. }, (response, hasError) {
  229. if (!hasError) {
  230. SmartOrderBeanEntity entity = SmartOrderBeanEntity()
  231. .fromJson(json.decode(response.data.toString()));
  232. if (page == 1) {
  233. orders.clear();
  234. }
  235. orders.addAll(entity.data.data);
  236. setState(() {});
  237. }
  238. endRe(controller);
  239. }, (error) {});
  240. }
  241. void deleteOrder(SmartOrderBeanDataData order) {
  242. MyDio().del({
  243. 'key': 'order',
  244. 'ids': [order.id]
  245. }, (response, hasError) {
  246. if (!hasError) {
  247. orders.remove(order);
  248. setState(() {});
  249. }
  250. }, (error) {});
  251. }
  252. }