coupon_edit_page.dart 8.33 KB
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/res/colors.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/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';

/**
 * 新建券
 */

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

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

class _CouponEidtPageState extends State<CouponEidtPage> {
  ScrollController controller = ScrollController();
  TextEditingController _couponNameEditControl;
  final heightCell = ScreenUtil().setWidth(80);
  bool swichState = true; //默认启用

  ///输入框
  Widget _textfield(String title, String hintText) {
    return Container(
      height: heightCell,
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.center,
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Container(
            // height: ScreenUtil().setWidth(40),
            // color: Colors.red,
            child: Text(
              title,
              style: TextStyle(
                  fontWeight: FontWeight.bold,
                  fontSize: ScreenUtil().setSp(30)),
            ),
          ),
          HEmptyView(20),
          Expanded(
            child: TextField(
              controller: _couponNameEditControl,
              textAlign: TextAlign.right,
              maxLines: 1,
              // //光标颜色
              // cursorColor:
              //     widget.isSelect ? Colors.white : MyColours.color_199095,
              //输入文本的样式
              style: TextStyle(
                fontSize: ScreenUtil().setSp(26),
              ),
              // focusNode: _cancelNode,
              // textAlignVertical: TextAlignVertical.bottom,
              decoration: InputDecoration(
                // fillColor: Colors.lightGreenAccent,
                // filled: true,
                border: OutlineInputBorder(borderSide: BorderSide.none),
                hintText: hintText,
                hintStyle: TextStyle(
                  color: MyColours.color_999999,
                  fontSize: ScreenUtil().setSp(26),
                ),
                // contentPadding: EdgeInsets.only(
                //     bottom: ScreenUtil().setWidth(30)), //ios 17
                // border: InputBorder.none,
              ),
              onChanged: (value) {},
              onEditingComplete: () {
                FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
              },
              keyboardType: TextInputType.text,
            ),
          )
        ],
      ),
    );
  }

  ///时间选择
  Widget _select(String title, String hintText) {
    return InkWell(
      onTap: () {
        //弹出时间选择器
      },
      child: Container(
        height: heightCell,
        child: Row(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Container(
              // height: ScreenUtil().setWidth(40),
              // color: Colors.red,
              child: Text(
                title,
                style: TextStyle(
                    fontWeight: FontWeight.bold,
                    fontSize: ScreenUtil().setSp(30)),
              ),
            ),
            HEmptyView(20),
            Spacer(),
            Text(hintText,
                style: TextStyle(
                  color: MyColours.color_999999,
                  fontSize: ScreenUtil().setSp(26),
                )),
            HEmptyView(20),
            Image.asset(
              Utils.getImgPath('arr_right_gray'),
              width: ScreenUtil().setWidth(12),
              height: ScreenUtil().setWidth(22),
            )
          ],
        ),
      ),
    );
  }

  ///券说明
  Widget _explain(String title, String hintText) {
    return Container(
      // height: ScreenUtil().setWidth(380),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Container(
            height: heightCell,
            child: Align(
                alignment: Alignment.centerLeft,
                child: Text(
                  title,
                  textAlign: TextAlign.left,
                  style: TextStyle(
                      fontWeight: FontWeight.bold,
                      fontSize: ScreenUtil().setSp(30)),
                )),
          ),
          VEmptyView(10),
          TextField(
            // keyboardType: TextInputType.number, //键盘类型,数字键盘
            maxLines: 7,
            // maxLength: 200,
            // maxLengthEnforced: true,

            decoration: InputDecoration(
              contentPadding: EdgeInsets.all(ScreenUtil().setWidth(20)),
              hintText: hintText,
              fillColor: MyColours.color_EEEEEE,
              filled: true,
              border: OutlineInputBorder(
                  borderRadius: BorderRadius.circular(15),
                  borderSide: BorderSide.none),
            ),
            onChanged: (value) {},
          ),
        ],
      ),
    );
  }

  ///是否立即启用
  Widget _canUse(String title) {
    return InkWell(
      onTap: () {
        setState(() {
          swichState = !swichState;
        });
      },
      child: Container(
        padding: EdgeInsets.only(top: ScreenUtil().setWidth(30)),
        // height: heightCell,
        child: Row(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Container(
              // height: ScreenUtil().setWidth(40),
              // color: Colors.red,
              child: Text(
                title,
                style: TextStyle(
                    fontWeight: FontWeight.bold,
                    fontSize: ScreenUtil().setSp(30)),
              ),
            ),
            Spacer(),
            Image.asset(
              swichState
                  ? Utils.getImgPath('swich_on')
                  : Utils.getImgPath('swich_off'),
              width: ScreenUtil().setWidth(122),
              height: ScreenUtil().setWidth(82),
            )
          ],
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: SystemAppBar(
        '创建新券',
        onTap: () {
          Navigator.pop(context, false);
        },
      ),
      body: InkWell(
          onTap: () {
            FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
          },
          child: Column(children: [
            Expanded(
              child: SingleChildScrollView(
                  controller: controller,
                  physics: BouncingScrollPhysics(),
                  child: Padding(
                      padding: EdgeInsets.symmetric(
                          horizontal: ScreenUtil().setWidth(40)),
                      child: Column(
                        children: [
                          VEmptyView(20),
                          _textfield('券名称', '例:9折券/200元代金券/菜品券'),
                          _textfield('券要求', '例:无门槛/满2000元'),
                          _select('有效期从', '点击选择'),
                          _select('有效期至', '点击选择'),
                          _explain('券说明', '例:可用包间,停车免费,不与店内其他活动共享等'),
                          _canUse('是否立即启用'),
                        ],
                      ))),
            ),
            VEmptyView(20),
            Padding(
                padding: EdgeInsets.fromLTRB(ScreenUtil().setWidth(40), 0,
                    ScreenUtil().setWidth(40), ScreenUtil().setWidth(40)),
                child: RoundButton(
                  onPressed: () {
                    Navigator.pop(context, true);
                  },
                  text: '保存',
                  fontSize: 34,
                  isBold: false,
                  height: ScreenUtil().setWidth(80),
                  width: double.infinity,
                  radius: ScreenUtil().setWidth(10),
                ))
          ])),
    );
  }
}