promotion_order.dart 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. import 'package:flutter/material.dart';
  2. import 'package:cached_network_image/cached_network_image.dart';
  3. import 'package:twong/api/index.dart';
  4. import 'package:twong/config/style.dart';
  5. import 'package:twong/models/index.dart';
  6. import 'package:twong/utils/index.dart';
  7. import 'package:twong/widgets/app_bar.dart';
  8. class PromotionOrderPage extends StatefulWidget {
  9. @override
  10. State<StatefulWidget> createState() {
  11. return _PromotionOrderState();
  12. }
  13. }
  14. class _PromotionOrderState extends State<PromotionOrderPage> {
  15. num total = 0;
  16. PromotionOrderData _data;
  17. @override
  18. void initState() {
  19. super.initState();
  20. loadData();
  21. }
  22. loadData() {
  23. Network.inst.getPromotionOrder().then((data) {
  24. setState(() {
  25. _data = data;
  26. total = _data.count;
  27. });
  28. });
  29. }
  30. @override
  31. Widget build(BuildContext context) {
  32. return Scaffold(
  33. backgroundColor: DColors.back,
  34. appBar: DAppBar("推广人订单"),
  35. body: SafeArea(
  36. child: ListView(
  37. physics: ClampingScrollPhysics(),
  38. children: [
  39. _buildHeader(),
  40. _buildList()
  41. ],
  42. ),
  43. ),
  44. );
  45. }
  46. Widget _buildHeader() {
  47. return Container(
  48. height: 88.px,
  49. color: DColors.Main,
  50. alignment: Alignment.centerLeft,
  51. padding: EdgeInsets.only(left: 22.px, top: 22.px),
  52. child: Column(
  53. crossAxisAlignment: CrossAxisAlignment.start,
  54. children: [
  55. Container(
  56. margin: EdgeInsets.only(bottom: 8.px),
  57. child: Text("累计推广订单", style: TextStyle(fontSize: 12.px,
  58. color: Colors.white)),
  59. ),
  60. RichText(text: TextSpan(
  61. text: total.toString(),
  62. style: TextStyle(fontSize: 22.px, color: Colors.white),
  63. children: [
  64. TextSpan(
  65. text: "单",
  66. style: TextStyle(fontSize: 12.px, color: Colors.white),
  67. )
  68. ]
  69. ))
  70. ],
  71. ),
  72. );
  73. }
  74. Widget _buildList() {
  75. List<Widget> widgets = List<Widget>();
  76. if(_data != null) {
  77. for (var item in _data.list) {
  78. List<Widget> subWidgets = List<Widget>();
  79. for (var subItem in item.child) {
  80. subWidgets.add(Container(
  81. padding: EdgeInsets.all(12.px),
  82. margin: EdgeInsets.only(left: 12.px, right: 12.px, bottom: 6.px),
  83. decoration: BoxDecoration(
  84. color: Colors.white,
  85. borderRadius: BorderRadius.circular(6.px)
  86. ),
  87. child: Column(
  88. crossAxisAlignment: CrossAxisAlignment.start,
  89. children: [
  90. Row(
  91. children: [
  92. Expanded(child: Row(
  93. crossAxisAlignment: CrossAxisAlignment.start,
  94. children: [
  95. CircleAvatar(
  96. backgroundImage: CachedNetworkImageProvider(
  97. subItem.avatar), radius: 12.px),
  98. Container(
  99. padding: EdgeInsets.only(top: 3.px),
  100. margin: EdgeInsets.only(left: 12.px),
  101. child: Text(subItem.nickname,
  102. style: TextStyle(fontSize: 13.px)),
  103. ),
  104. ])),
  105. RichText(
  106. text: TextSpan(
  107. text: "返佣: ",
  108. style: TextStyle(
  109. color: Colors.black, fontSize: 12.px),
  110. children: [
  111. TextSpan(
  112. text: Utils.formatRMB(
  113. subItem.number, show: true),
  114. style: TextStyle(
  115. color: DColors.price, fontSize: 14.px))
  116. ])
  117. ),
  118. ],
  119. ),
  120. Divider(),
  121. Text("返佣时间: ${subItem.time}", style:
  122. TextStyle(color: Colors.grey, fontSize: 12.px))
  123. ],
  124. ),
  125. ));
  126. }
  127. widgets.add(Container(
  128. child: Column(
  129. crossAxisAlignment: CrossAxisAlignment.start,
  130. children: [
  131. Container(
  132. margin: EdgeInsets.all(12.px),
  133. padding: EdgeInsets.only(left: 6.px, right: 6.px),
  134. child: Column(
  135. crossAxisAlignment: CrossAxisAlignment.start,
  136. children: [
  137. Text(item.time, style: TextStyle(fontSize: 12.px)),
  138. Text("本月累计推广订单: ${item.count} 单", style:
  139. TextStyle(fontSize: 10.px, color: Colors.grey))
  140. ],
  141. )),
  142. Container(
  143. width: double.infinity,
  144. child: Column(
  145. crossAxisAlignment: CrossAxisAlignment.start,
  146. children: subWidgets))
  147. ]),
  148. ));
  149. }
  150. }
  151. return Container(
  152. child: _data == null ? Container(
  153. margin: EdgeInsets.only(top: 88.px),
  154. child: Center(child: Utils.loadingWidget),
  155. ) : Column(
  156. crossAxisAlignment: CrossAxisAlignment.start,
  157. children: widgets,
  158. ),
  159. );
  160. }
  161. }