promotion_record.dart 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import 'package:flutter/material.dart';
  2. import 'package:twong/api/index.dart';
  3. import 'package:twong/config/style.dart';
  4. import 'package:twong/models/index.dart';
  5. import 'package:twong/utils/index.dart';
  6. import 'package:twong/widgets/app_bar.dart';
  7. class PromotionRecordPage extends StatefulWidget {
  8. @override
  9. State<StatefulWidget> createState() {
  10. return _PromotionRecordState();
  11. }
  12. }
  13. class _PromotionRecordState extends State<PromotionRecordPage> {
  14. num total = 0;
  15. List<PromoteRecordList> _data;
  16. @override
  17. void initState() {
  18. super.initState();
  19. loadData();
  20. }
  21. loadData() {
  22. Network.inst.getPromotionRecord(type: 3).then((res) {
  23. setState(() {
  24. _data = res;
  25. });
  26. });
  27. Network.inst.getPromotionCommission().then((res) {
  28. setState(() {
  29. total = num.parse(res["commissionCount"].toString());
  30. });
  31. });
  32. }
  33. @override
  34. Widget build(BuildContext context) {
  35. return Scaffold(
  36. backgroundColor: DColors.back,
  37. appBar: DAppBar("佣金记录"),
  38. body: SafeArea(
  39. child: ListView(
  40. physics: ClampingScrollPhysics(),
  41. children: [
  42. _buildHeader(),
  43. _buildList()
  44. ],
  45. ),
  46. ),
  47. );
  48. }
  49. Widget _buildHeader() {
  50. return Container(
  51. height: 88.px,
  52. color: DColors.Main,
  53. alignment: Alignment.centerLeft,
  54. padding: EdgeInsets.only(left: 22.px, top: 22.px),
  55. child: Column(
  56. crossAxisAlignment: CrossAxisAlignment.start,
  57. children: [
  58. Container(
  59. margin: EdgeInsets.only(bottom: 8.px),
  60. child: Text("佣金总额", style: TextStyle(fontSize: 12.px,
  61. color: Colors.white)),
  62. ),
  63. RichText(text: TextSpan(
  64. text: I18n.$,
  65. style: TextStyle(fontSize: 12.px, color: Colors.white),
  66. children: [
  67. TextSpan(
  68. text: Utils.formatRMB(total),
  69. style: TextStyle(fontSize: 22.px, color: Colors.white),
  70. )
  71. ]
  72. ))
  73. ],
  74. ),
  75. );
  76. }
  77. Widget _buildList() {
  78. List<Widget> widgets = List<Widget>();
  79. if(_data != null) {
  80. for (var item in _data) {
  81. List<Widget> subWidgets = List<Widget>();
  82. for (var subItem in item.list) {
  83. subWidgets.add(Container(
  84. margin: EdgeInsets.all(8.px),
  85. padding: EdgeInsets.only(left: 6.px, right: 6.px),
  86. child: Row(
  87. children: [
  88. Expanded(child: Column(
  89. crossAxisAlignment: CrossAxisAlignment.start,
  90. children: [
  91. Text(subItem.title, style: TextStyle(fontSize: 13.px)),
  92. Text(
  93. subItem.add_time, style: TextStyle(color: Colors.grey,
  94. fontSize: 12.px)),
  95. ])),
  96. Text(Utils.formatRMB(subItem.number, sign: true),
  97. style: TextStyle(color: Colors.green, fontSize: 16.px))
  98. ],
  99. ),
  100. ));
  101. subWidgets.add(Divider());
  102. }
  103. subWidgets.removeLast();
  104. widgets.add(Container(
  105. child: Column(
  106. crossAxisAlignment: CrossAxisAlignment.start,
  107. children: [
  108. Container(
  109. margin: EdgeInsets.all(12.px),
  110. padding: EdgeInsets.only(left: 6.px, right: 6.px),
  111. child: Text(item.time, style: TextStyle(fontSize: 12.px))),
  112. Container(
  113. color: Colors.white,
  114. width: double.infinity,
  115. child: Column(
  116. crossAxisAlignment: CrossAxisAlignment.start,
  117. children: subWidgets))
  118. ]),
  119. ));
  120. }
  121. }
  122. return Container(
  123. child: _data == null ? Container(
  124. margin: EdgeInsets.only(top: 88.px),
  125. child: Center(child: Utils.loadingWidget),
  126. ) : Column(
  127. crossAxisAlignment: CrossAxisAlignment.start,
  128. children: widgets,
  129. ),
  130. );
  131. }
  132. }