coupon_selecet_page.dart 8.34 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/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/navigator_util.dart';
import 'package:one_key/utils/utils.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 {
  final String rid;
  final bool hasModify;
  CouponSelectPage({Key key, this.rid, this.hasModify}) : super(key: key);

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

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

  ///获取优惠券列表数据(status == 1)

  _couponNetworkData({bool isShowLoading = true}) async {
    Map<String, String> params = {
      "uid": Provider.of<UserModel>(context, listen: false).user.openid,
    };
    if (!widget.hasModify) {
      params['status'] = '1';
    }
    await couponProvider.getCustomerSelectActivity(context, params,
        isShowLoading: isShowLoading);
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      // if (!couponProvider.hasModify) {
      _couponNetworkData();
      // } else {
      //   couponProvider.pageStateSelect = PageState.Success;
      //   // couponProvider.notifyListeners();
      // }
    });
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    couponProvider = Provider.of<CouponProvider>(context, listen: true);
    return Scaffold(
      appBar: SystemAppBar(
        '优惠券',
        onTap: () {
          Navigator.pop(context);
          Utils.changeStatusColor(color: Colors.transparent);
        },
        rightImgName: !widget.hasModify &&
                couponProvider.pageStateSelect == PageState.Success
            ? couponProvider.checkValue
                ? '取消全选'
                : '全选'
            : '',
        onTapRight: () {
          if (couponProvider.checkValue) {
            couponProvider.cancelAll();
          } else {
            couponProvider.addAll();
          }
        },
      ),
      body: WillPopScope(
        child: 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.couponListSelect[index].isCheck =
                                  !couponProvider
                                      .couponListSelect[index].isCheck;
                              if (couponProvider
                                  .couponListSelect[index].isCheck) {
                                couponProvider.addData(index);
                              } else {
                                couponProvider.cancelData(index);
                              }
                              couponProvider.getCheckValue();
                            },
                            child: Row(
                              children: [
                                HEmptyView(30),
                                !widget.hasModify
                                    ? Checkbox(
                                        value: couponProvider
                                            .couponListSelect[index].isCheck,
                                        checkColor: MyColours.color_ffffff,
                                        activeColor: MyColours.app_main,
                                        onChanged: (bool value) {
                                          //改这里 ******8
                                          couponProvider.couponListSelect[index]
                                                  .isCheck =
                                              !couponProvider
                                                  .couponListSelect[index]
                                                  .isCheck;
                                          if (couponProvider
                                              .couponListSelect[index]
                                              .isCheck) {
                                            couponProvider.addData(index);
                                          } else {
                                            couponProvider.cancelData(index);
                                          }
                                          couponProvider.getCheckValue();
                                        },
                                      )
                                    : Container(),
                                // Image.asset(
                                //     couponProvider.listData[index]['checked']
                                //         ? 'assets/select.png'
                                //         : 'assets/unselect.png',
                                //     width: ScreenUtil().setWidth(44)),
                                Expanded(
                                    child: CouponItem(
                                  from: 'select',
                                  couponSonModel:
                                      couponProvider.couponListSelect[index],
                                  onPressed: () {},
                                ))
                              ],
                            ),
                          );
                        }, childCount: couponProvider.couponListSelect.length),
                      )
                    ],
                    // onRefresh: () async {
                    //   // offset = 0;
                    //   // getMessage(showLoading: false);
                    // },
                    // onLoad: () async {
                    //   // offset++;
                    //   // getMessage(showLoading: false);
                    // },
                  );
                }
              },
            )),
            VEmptyView(20),
            !widget.hasModify &&
                    couponProvider.pageStateSelect == PageState.Success
                ? Padding(
                    padding: EdgeInsets.fromLTRB(ScreenUtil().setWidth(40), 0,
                        ScreenUtil().setWidth(40), ScreenUtil().setWidth(40)),
                    child: RoundButton(
                      onPressed: () async {
                        Navigator.pop(context);
                      },
                      text: '已选${couponProvider.coupons.length}个 确定',
                      fontSize: 34,
                      isBold: false,
                      height: ScreenUtil().setWidth(80),
                      width: double.infinity,
                      radius: ScreenUtil().setWidth(10),
                    ))
                : Container()
          ],
        ),
        onWillPop: () async {
          Utils.changeStatusColor(color: Colors.transparent);
          Navigator.of(context).pop();
          return true;
        },
      ),
    );
  }
}