advertising_page.dart 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import 'dart:convert';
  2. import 'package:bbyyy/beans/ad_bean_entity.dart';
  3. import 'package:bbyyy/https/MyDio.dart';
  4. import 'package:bbyyy/my_tools/dims.dart';
  5. import 'package:bbyyy/my_tools/my_cookie.dart';
  6. import 'package:bbyyy/my_tools/my_tools.dart';
  7. import 'package:bbyyy/my_tools/my_views.dart';
  8. import 'package:bbyyy/paegs/ad_details_page/ad_details_page.dart';
  9. import 'package:flutter/material.dart';
  10. import 'package:pull_to_refresh/pull_to_refresh.dart';
  11. import 'new_ad_page.dart';
  12. class AdvertisingPage extends StatefulWidget {
  13. @override
  14. _AdvertisingPageState createState() => _AdvertisingPageState();
  15. }
  16. class _AdvertisingPageState extends State<AdvertisingPage> {
  17. RefreshController controller = RefreshController(initialRefresh: true);
  18. List<AdBeanDataData> data = [];
  19. int page = 1;
  20. @override
  21. Widget build(BuildContext context) {
  22. return Scaffold(
  23. body: Column(
  24. children: [
  25. MyViews().myAppBar('广告', context, [
  26. IconButton(
  27. icon: Icon(Icons.add_circle_outline),
  28. onPressed: () {
  29. MyTools().toPage(context, NewAdPage(null), (then) {
  30. if (then is bool && then) {
  31. page = 1;
  32. controller.requestRefresh();
  33. } else if (then is int && then == 1) {
  34. page = 1;
  35. controller.requestRefresh();
  36. }
  37. });
  38. }),
  39. ]),
  40. Expanded(
  41. child: SmartRefresher(
  42. onRefresh: onRefresh,
  43. onLoading: onLoading,
  44. enablePullUp: true,
  45. enablePullDown: true,
  46. controller: controller,
  47. child: data.length == 0
  48. ? SingleChildScrollView(child: noData())
  49. : GridView.builder(
  50. gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  51. crossAxisCount: 2,
  52. childAspectRatio: 164 / 260,
  53. mainAxisSpacing: 11,
  54. crossAxisSpacing: 15),
  55. itemCount: data.length,
  56. padding: EdgeInsets.all(16),
  57. itemBuilder: (context, index) {
  58. return GestureDetector(
  59. child: advertisingItems(context, data[index]),
  60. onTap: () {
  61. MyTools().toPage(
  62. context,
  63. AdDetailsPage(
  64. data[index],
  65. canBeModified: true,
  66. ), (then) {
  67. if (then is bool && then) {
  68. page = 1;
  69. controller.requestRefresh();
  70. }
  71. });
  72. },
  73. behavior: HitTestBehavior.translucent,
  74. );
  75. }),
  76. ),
  77. ),
  78. ],
  79. ),
  80. );
  81. }
  82. void onRefresh() {
  83. page = 1;
  84. checkMyAd();
  85. }
  86. void onLoading() {
  87. page++;
  88. checkMyAd();
  89. }
  90. checkMyAd() {
  91. MyDio().query({
  92. "key": "ad",
  93. "filters": {
  94. "conditions": ['user_uid == ${MyCookie().getUID()}']
  95. },
  96. "dims": adDims,
  97. "paging": [page, 20],
  98. "order_by": ["create_time,DESC"]
  99. }, (response, hasError) {
  100. if (!hasError) {
  101. AdBeanEntity entity =
  102. AdBeanEntity().fromJson(json.decode(response.data.toString()));
  103. if (page == 1) {
  104. data.clear();
  105. }
  106. data.addAll(entity.data.data);
  107. setState(() {});
  108. }
  109. endRe(controller);
  110. }, (error) {});
  111. }
  112. }