my_goods_page.dart 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. import 'dart:convert';
  2. import 'package:bbyyy/beans/goods_bean_entity.dart';
  3. import 'package:bbyyy/https/MyDio.dart';
  4. import 'package:bbyyy/my_tools/dims.dart';
  5. import 'package:bbyyy/my_tools/event_bus.dart';
  6. import 'package:bbyyy/my_tools/my_colors.dart';
  7. import 'package:bbyyy/my_tools/my_cookie.dart';
  8. import 'package:bbyyy/my_tools/my_tools.dart';
  9. import 'package:bbyyy/my_tools/my_views.dart';
  10. import 'package:bbyyy/paegs/release_goods_page/release_goods_page.dart';
  11. import 'package:flutter/cupertino.dart';
  12. import 'package:flutter/material.dart';
  13. import 'package:flutter_slidable/flutter_slidable.dart';
  14. import 'package:flutter_svg/svg.dart';
  15. import 'package:pull_to_refresh/pull_to_refresh.dart';
  16. class MyGoodsPage extends StatefulWidget {
  17. @override
  18. _MyGoodsPageState createState() => _MyGoodsPageState();
  19. }
  20. class _MyGoodsPageState extends State<MyGoodsPage> {
  21. List<GoodsBeanDataData> data = [];
  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('updateProduct', (arg) {controller.requestRefresh();});
  29. }
  30. @override
  31. void dispose() {
  32. // TODO: implement dispose
  33. super.dispose();
  34. EventBus().off('updateProduct');
  35. }
  36. @override
  37. Widget build(BuildContext context) {
  38. return Scaffold(
  39. backgroundColor: MyColors.cF7F7F7,
  40. body: Column(
  41. children: [
  42. MyViews().myAppBar('我的商品', context, [
  43. GestureDetector(
  44. onTap: () {
  45. MyTools().toPage(context, ReleaseGoodsPage(null,''), (then) {
  46. controller.requestRefresh();
  47. });
  48. },
  49. behavior: HitTestBehavior.translucent,
  50. child: Container(
  51. padding: EdgeInsets.symmetric(vertical: 8, horizontal: 16),
  52. child: Text(
  53. '发布',
  54. style: TextStyle(color: MyColors.c333333, fontSize: 16),
  55. ),
  56. ),
  57. ),
  58. ]),
  59. Expanded(
  60. child: SmartRefresher(
  61. controller: controller,
  62. onRefresh: onRefresh,
  63. onLoading: onLoading,
  64. enablePullDown: true,
  65. enablePullUp: true,
  66. child: data.length == 0
  67. ? SingleChildScrollView(child: noData())
  68. : ListView.builder(
  69. itemBuilder: (c, index) {
  70. return Slidable(
  71. actionPane: SlidableDrawerActionPane(),
  72. actionExtentRatio: 0.25,
  73. child: MyViews().getMyGoodsItem(data[index], context),
  74. secondaryActions: <Widget>[
  75. SlideAction(
  76. child: Container(
  77. child: Container(
  78. decoration: BoxDecoration(
  79. borderRadius: BorderRadius.circular(30),
  80. color: MyColors.cFF4233,
  81. ),
  82. height: 60,width: 60,
  83. child: SvgPicture.asset('images/svg/del.svg',height: 40,width: 40,),
  84. alignment: Alignment.center,
  85. ),
  86. ),
  87. onTap: (){
  88. showSimpleDialog(
  89. '确认删除(${data[index].title})', context,
  90. () async {
  91. Navigator.pop(context);
  92. delGoods(data[index]);
  93. });
  94. },
  95. )
  96. ],
  97. );
  98. },
  99. itemCount: data.length,
  100. padding: EdgeInsets.only(top: 10),
  101. ),
  102. ),
  103. ),
  104. ],
  105. ),
  106. );
  107. }
  108. void getMyGoods() {
  109. MyDio().query({
  110. "key": "commodity",
  111. "filters": {
  112. "conditions": ["user_uid == ${MyCookie().getUID()}"]
  113. },
  114. "dims": commodityDims,
  115. "paging": [page, 20]
  116. }, (response, hasError) {
  117. if (!hasError) {
  118. GoodsBeanEntity entity =
  119. GoodsBeanEntity.fromJson(json.decode(response.data.toString()));
  120. if (page == 1) {
  121. data.clear();
  122. }
  123. data.addAll(entity.data.data);
  124. setState(() {});
  125. }
  126. endRe(controller);
  127. }, (error) {});
  128. }
  129. void onRefresh() {
  130. page = 1;
  131. getMyGoods();
  132. }
  133. void onLoading() {
  134. page++;
  135. getMyGoods();
  136. }
  137. delGoods(GoodsBeanDataData goods) {
  138. MyDio().del({
  139. 'key': 'commodity',
  140. 'ids': [goods.id]
  141. }, (response, hasError) {
  142. if (!hasError) {
  143. showToast('删除成功');
  144. data.remove(goods);
  145. setState(() {});
  146. }
  147. }, (error) {});
  148. }
  149. }