import 'dart:convert'; import 'package:bbyyy/beans/ad_bean_entity.dart'; import 'package:bbyyy/https/MyDio.dart'; import 'package:bbyyy/my_tools/dims.dart'; import 'package:bbyyy/my_tools/my_cookie.dart'; import 'package:bbyyy/my_tools/my_tools.dart'; import 'package:bbyyy/my_tools/my_views.dart'; import 'package:bbyyy/paegs/ad_details_page/ad_details_page.dart'; import 'package:flutter/material.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'new_ad_page.dart'; class AdvertisingPage extends StatefulWidget { @override _AdvertisingPageState createState() => _AdvertisingPageState(); } class _AdvertisingPageState extends State { RefreshController controller = RefreshController(initialRefresh: true); List data = []; int page = 1; @override Widget build(BuildContext context) { return Scaffold( body: Column( children: [ MyViews().myAppBar('广告', context, [ IconButton( icon: Icon(Icons.add_circle_outline), onPressed: () { MyTools().toPage(context, NewAdPage(null), (then) { if (then is bool && then) { page = 1; controller.requestRefresh(); } else if (then is int && then == 1) { page = 1; controller.requestRefresh(); } }); }), ]), Expanded( child: SmartRefresher( onRefresh: onRefresh, onLoading: onLoading, enablePullUp: true, enablePullDown: true, controller: controller, child: data.length == 0 ? SingleChildScrollView(child: noData()) : GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, childAspectRatio: 164 / 260, mainAxisSpacing: 11, crossAxisSpacing: 15), itemCount: data.length, padding: EdgeInsets.all(16), itemBuilder: (context, index) { return GestureDetector( child: advertisingItems(context, data[index]), onTap: () { MyTools().toPage( context, AdDetailsPage( data[index], canBeModified: true, ), (then) { if (then is bool && then) { page = 1; controller.requestRefresh(); } }); }, behavior: HitTestBehavior.translucent, ); }), ), ), ], ), ); } void onRefresh() { page = 1; checkMyAd(); } void onLoading() { page++; checkMyAd(); } checkMyAd() { MyDio().query({ "key": "ad", "filters": { "conditions": ['user_uid == ${MyCookie().getUID()}'] }, "dims": adDims, "paging": [page, 20], "order_by": ["create_time,DESC"] }, (response, hasError) { if (!hasError) { AdBeanEntity entity = AdBeanEntity().fromJson(json.decode(response.data.toString())); if (page == 1) { data.clear(); } data.addAll(entity.data.data); setState(() {}); } endRe(controller); }, (error) {}); } }