advertising_page.dart 3.6 KB

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