coupon_selecet_page.dart 5.85 KB
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/pages/coupon/coupon_item.dart';
import 'package:one_key/provider/coupon_provider.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';

class CouponSelectPage extends StatefulWidget {
  CouponSelectPage({Key key}) : super(key: key);

  @override
  _CouponSelectPageState createState() => _CouponSelectPageState();
}

class _CouponSelectPageState extends State<CouponSelectPage> {
  EasyRefreshController _controller = EasyRefreshController();
  CouponProvider couponProvider;

  ///获取优惠券列表数据
  _couponNetworkData() {
    return Future.delayed(Duration(seconds: 1),
        () => couponProvider.pageStateSelect = PageState.Success);
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      _couponNetworkData();
    });
  }

  @override
  Widget build(BuildContext context) {
    couponProvider = Provider.of<CouponProvider>(context, listen: true);
    return Scaffold(
      appBar: SystemAppBar(
        '优惠券',
        onTap: () {
          Navigator.pop(context);
        },
        rightImgName: couponProvider.checkValue ? '取消全选' : '全选',
        onTapRight: () {
          if (couponProvider.checkValue) {
            couponProvider.cancelAll();
          } else {
            couponProvider.addAll();
          }
        },
      ),
      body: Column(
        children: [
          Expanded(child: Consumer<CouponProvider>(
            builder: (context, model, _) {
              if (model.pageStateSelect != PageState.Success) {
                return ExceptionPage(
                  pageState: model.pageStateSelect,
                  callback: () {
                    // offset = 0;
                    // getMessage(showLoading: true);
                  },
                  emptyMsg: "暂时没有列表信息哦",
                  emptyImg: "empty_search",
                  showMsg: "加载中,请稍后...",
                );
              } else {
                return EasyRefresh.custom(
                  controller: _controller,
                  shrinkWrap: true,
                  slivers: [
                    SliverList(
                      delegate: SliverChildBuilderDelegate(
                          (BuildContext context, int index) {
                        return InkWell(
                          onTap: () {
                            couponProvider.listData[index]['checked'] =
                                !couponProvider.listData[index]['checked'];
                            if (couponProvider.listData[index]['checked']) {
                              couponProvider.addData(index);
                            } else {
                              couponProvider.cancelData(index);
                            }
                            couponProvider.getCheckValue();
                          },
                          child: Row(
                            children: [
                              HEmptyView(30),
                              Image.asset(
                                  couponProvider.listData[index]['checked']
                                      ? 'assets/select.png'
                                      : 'assets/unselect.png',
                                  width: ScreenUtil().setWidth(44)),
                              Expanded(
                                  child: CouponItem(
                                index: index,
                                couponProvider: couponProvider,
                                onPressed: () {
                                  couponProvider.listData[index]['checked'] =
                                      !couponProvider.listData[index]
                                          ['checked'];
                                  if (couponProvider.listData[index]
                                      ['checked']) {
                                    couponProvider.addData(index);
                                  } else {
                                    couponProvider.cancelData(index);
                                  }
                                  couponProvider.getCheckValue();
                                },
                              ))
                            ],
                          ),
                        );
                      }, childCount: couponProvider.listData.length),
                    )
                  ],
                  onRefresh: () async {
                    // offset = 0;
                    // getMessage(showLoading: false);
                  },
                  onLoad: () async {
                    // offset++;
                    // getMessage(showLoading: false);
                  },
                );
              }
            },
          )),
          VEmptyView(20),
          Padding(
              padding: EdgeInsets.fromLTRB(ScreenUtil().setWidth(40), 0,
                  ScreenUtil().setWidth(40), ScreenUtil().setWidth(40)),
              child: RoundButton(
                onPressed: () {
                  Navigator.pop(context);
                },
                text: '已选${couponProvider.coupons.length}个 确定',
                fontSize: 34,
                isBold: false,
                height: ScreenUtil().setWidth(80),
                width: double.infinity,
                radius: ScreenUtil().setWidth(10),
              ))
        ],
      ),
    );
  }
}