import 'package:dio/dio.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/coupon.dart'; import 'package:huixiang/retrofit/data/page.dart'; import 'package:huixiang/retrofit/retrofit_api.dart'; import 'package:huixiang/view_widget/classic_header.dart'; import 'package:huixiang/view_widget/my_footer.dart'; import 'package:huixiang/view_widget/new_coupon_widget.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; class CouponsPage extends StatefulWidget { @override State createState() { return _CouponsPage(); } } class _CouponsPage extends State { ApiService apiService; RefreshController _refreshController; @override void initState() { super.initState(); SharedPreferences.getInstance().then((value) { apiService = ApiService(Dio(), context: context, token: value.getString('token')); queryCard(); }); _refreshController = RefreshController(initialRefresh: false); } List coupons = []; int pageNum = 1; int state = 1; _onRefresh() async { pageNum = 1; queryCard(); } queryCard() async { BaseData baseData = await apiService.queryCard({ "centre": true, "pageNum": pageNum, "pageSize": 10, "searchKey": "", "state": state }).catchError((error) { _refreshController.loadFailed(); _refreshController.refreshFailed(); }); if (baseData != null && baseData.isSuccess) { PageInfo pageInfo = PageInfo.fromJson(baseData.data); if (pageNum == 1) { coupons.clear(); } coupons.addAll(pageInfo.list.map((e) => Coupon.fromJson(e))); setState(() { _refreshController.refreshCompleted(); _refreshController.loadComplete(); if (pageInfo.pageNum == pageInfo.pages) { _refreshController.loadNoData(); } else { pageNum += 1; } }); } else { _refreshController.loadFailed(); _refreshController.refreshFailed(); Fluttertoast.showToast(msg: baseData.msg); } } @override Widget build(BuildContext context) { return Scaffold( body: Column( children: [ Row( children: [ Container( width: 68.w, height: 26.h, alignment: Alignment.center, margin: EdgeInsets.only( left: 16.w, right: 12.w, top: 10.h, bottom: 14.h), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(2)), color: state == 1 ? Colors.white : Color(0xffE5E5E5), ), child: GestureDetector( onTap: () { setState(() { state = 1; _onRefresh(); }); }, child: Text( S.of(context).keyongquan, style: TextStyle( fontSize: 14.sp, fontWeight: state == 1 ? FontWeight.bold : FontWeight.normal, color: state == 1 ? Colors.black : Color(0xff727272), ), ), ), ), Container( width: 68.w, height: 26.h, alignment: Alignment.center, margin: EdgeInsets.only(left: 16.w, top: 10.h, bottom: 14.h), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(2)), color: state == 3 ? Colors.white : Color(0xffE5E5E5), ), child: GestureDetector( onTap: () { setState(() { state = 3; _onRefresh(); }); }, child: Text( S.of(context).shixiaoquan, style: TextStyle( fontSize: 14.sp, fontWeight: state == 3 ? FontWeight.bold : FontWeight.normal, color: state == 3 ? Colors.black : Color(0xff727272), ), ), ), ), ], ), Expanded( child: SmartRefresher( controller: _refreshController, enablePullDown: true, enablePullUp: true, physics: BouncingScrollPhysics(), header: MyHeader(), footer: CustomFooter( builder: (context, mode) { return MyFooter(mode); }, ), onRefresh: _onRefresh, onLoading: queryCard, child: ListView.builder( itemBuilder: (context, position) { return GestureDetector( child: NewCouponWidget(coupons[position], (type) {}, () { setState(() { coupons[position].isEx = !coupons[position].isEx; }); }), ); }, itemCount: coupons != null ? coupons.length : 0, ), ), ), ], ), ); } }