coupon_selecet_page.dart 12.2 KB
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/pages/coupon/coupon_item.dart';
import 'package:one_key/provider/SmsModel.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/dialog_util.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/route/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';
import 'package:sendsms/sendsms.dart';
// import 'package:sendsms/sendsms.dart';
import 'package:flutter_sms/flutter_sms.dart';

class CouponSelectPage extends StatefulWidget {
  final String from;
  final bool hasModify;
  CouponSelectPage({Key key, this.from, 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() {
    // Utils.changeStatusColor(color: Colors.transparent);
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    couponProvider = Provider.of<CouponProvider>(context, listen: true);
    return Scaffold(
      backgroundColor: MyColours.color_ffffff,
      appBar: AppBar(
        backgroundColor: Colors.transparent,
        elevation: 0,
        leading: InkWell(
          onTap: () {
            Navigator.pop(context);
          },
          child: Padding(
              padding: EdgeInsets.symmetric(
                  horizontal: ScreenUtil().setWidth(40),
                  vertical: ScreenUtil().setWidth(15)),
              child: Row(
                children: <Widget>[
                  Image.asset(
                    "assets/icon_back.png",
                    width: ScreenUtil().setWidth(20),
                    height: ScreenUtil().setWidth(31),
                  )
                ],
              )),
        ),
        title: Text(
          '优惠券',
          style: TextStyle(
              color: MyColours.color_353535,
              fontSize: ScreenUtil().setSp(34),
              decoration: TextDecoration.none),
        ),
        actions: <Widget>[
          !widget.hasModify &&
                  couponProvider.pageStateSelect == PageState.Success
              ? InkWell(
                  onTap: () {
                    if (couponProvider.checkValue) {
                      couponProvider.cancelAll();
                    } else {
                      couponProvider.addAll();
                    }
                  },
                  child: Padding(
                      padding:
                          EdgeInsets.only(right: ScreenUtil().setWidth(40)),
                      child: Row(children: [
                        Container(
                            // color: Colors.red,
                            alignment: Alignment.center,
                            child: Text(
                              '全选',
                              style: TextStyle(
                                  color: MyColours.color_199095,
                                  fontSize: ScreenUtil().setSp(34)),
                            )),
                        HEmptyView(20),
                        Image.asset(
                            Utils.getImgPath(couponProvider.checkValue
                                ? 'check_g'
                                : 'check_un'),
                            width: ScreenUtil().setWidth(40))
                      ])))
              : Container()
        ],
        centerTitle: true, // 标题居中
      ),
      body: Column(
        children: [
          Expanded(child: Consumer<CouponProvider>(
            builder: (context, model, _) {
              if (model.pageStateSelect != PageState.Success) {
                return ExceptionPage(
                  pageState: model.pageStateSelect,
                  callback: () {
                    _couponNetworkData();
                    // 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 VEmptyView(40);
                      }, childCount: 1),
                    ),
                    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) {},
                            //           )
                            //         : Container(),
                            // Image.asset(
                            //     couponProvider.listData[index]['checked']
                            //         ? 'assets/select.png'
                            //         : 'assets/unselect.png',
                            //     width: ScreenUtil().setWidth(44)),
                            child: CouponItem(
                                from: 'select',
                                showCheck: !widget.hasModify,
                                couponSonModel:
                                    couponProvider.couponListSelect[index],
                                onPressed: () {
                                  //改这里 ******8
                                  if (!widget.hasModify) {
                                    couponProvider
                                            .couponListSelect[index].isCheck =
                                        !couponProvider
                                            .couponListSelect[index].isCheck;
                                    if (couponProvider
                                        .couponListSelect[index].isCheck) {
                                      couponProvider.addData(index);
                                    } else {
                                      couponProvider.cancelData(index);
                                    }
                                    couponProvider.getCheckValue();
                                  }
                                }));
                      }, 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 {
                      if (widget.from == 'statistics') {
                        /*** 发版注释
                          DialogUtil.cupertinoAlertDialog(context,
                              title: '确认发送',
                              content: '是否确定为当前所选顾客发送该优惠券', lCallback: () {
                            print('取消发送');
                          }, rCallback: () async {
                            if (Platform.isIOS) {
                              List<String> phoneNumber = [
                                '18161963378',
                                '18729572142',
                                '18765432345'
                              ];
                              String message = "test";
                              try {
                                String _result = await sendSMS(
                                    message: message, recipients: phoneNumber);
                                print(_result);
                              } catch (error) {
                                print(error.toString());
                              }
                            } else {
                              print('确定发送');
                              String phoneNumber = "18161963378;18729572142";
                              String message = "test";

                              // await Sendsms.onGetPermission();

                              // if (await Sendsms.hasPermission()) {
                              await Sendsms.onSendSMS(phoneNumber, message);
                            }

                            // }
                            // SmsModel smsModel = new SmsModel();
                            // // String sms = await smsModel.getSmsContent(context, params);
                            // String phoneNumber = "";
                            // await Sendsms.onSendSMS(phoneNumber, '短信内容');
                          });
                           */
                      } else {
                        Navigator.pop(context);
                      }
                    },
                    text: '已选${couponProvider.coupons.length}个 确定',
                    fontSize: 34,
                    isBold: false,
                    height: ScreenUtil().setWidth(80),
                    width: double.infinity,
                    radius: ScreenUtil().setWidth(10),
                  ))
              : Container()
        ],
      ),
    );
  }
}