wine_setting_page.dart 8.89 KB
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/provider/menu_provider.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';

import '../../../provider/user_model.dart';
import '../../../utils/screen_util.dart';
import '../../../widgets/h_empty_view.dart';

/**
 * 存酒配置
 */

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

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

class _WineSettingPageState extends State<WineSettingPage> {
  TextEditingController dayC = TextEditingController();
  FocusNode dayF = FocusNode();
  bool swich = true;
  MenuManageProvider menuManageProvider;

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) async {
      _getDzSellerConf();
    });
  }

  _getDzSellerConf() async {
    bool success =
        await menuManageProvider.getDzSellerConf(context, showLoading: false);
    if (success) {
      swich =
          menuManageProvider.dzSellerConfModel.isStoreSms == '0' ? false : true;
      dayC.text = menuManageProvider.dzSellerConfModel.storeDate ?? '';
      setState(() {});
    }
  }

  Widget _divider() {
    return Padding(
      padding: EdgeInsets.only(left: w(16)),
      child: MyDivider(
        double.infinity,
        w(1),
        color: MyColours.color_E7E7E7,
      ),
    );
  }

  ///请输入
  ///输入框
  Widget _textfield(
      BuildContext context,
      String title,
      String hintText,
      TextEditingController editingController,
      FocusNode focusNode,
      String subTitle,
      {TextInputType inputType = TextInputType.text}) {
    return Container(
      height: w(48),
      margin: EdgeInsets.only(top: w(12)),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          Container(
            // width: w(81),
            // height: w(48),
            // alignment: Alignment.center,
            child: Text(
              title,
              style: TextStyle(
                  fontSize: ScreenUtil().setSp(32),
                  color: MyColours.color_515151),
            ),
          ),
          HEmptyView(32),
          Expanded(
            child: Container(
                // height: ScreenUtil().setHeight(120),
                height: w(48),
                padding: EdgeInsets.only(top: w(4)),
                child: TextField(
                  controller: editingController,
                  textAlign: TextAlign.right,
                  // textAlignVertical: TextAlignVertical.bottom,
                  maxLines: 1,
                  // inputFormatters: [],

                  // //光标颜色
                  // cursorColor:
                  //     widget.isSelect ? Colors.white : MyColours.color_199095,
                  //输入文本的样式
                  style: TextStyle(
                      fontSize: ScreenUtil().setSp(32),
                      color: MyColours.color_515151),
                  focusNode: focusNode,
                  decoration: InputDecoration(
                    border: OutlineInputBorder(borderSide: BorderSide.none),
                    hintText: hintText,
                    hintStyle: TextStyle(
                      color: hintText == '请输入'
                          ? MyColours.color_999999
                          : MyColours.color_515151,
                      fontSize: ScreenUtil().setSp(32),
                    ),
                    contentPadding: EdgeInsets.zero,
                  ),
                  onChanged: (value) {},
                  onEditingComplete: () {
                    FocusScope.of(context)
                        .requestFocus(FocusNode()); //点击空白处隐藏键盘
                  },
                  keyboardType: inputType,
                )),
          ),
          Container(
            padding: EdgeInsets.only(left: w(4)),
            child: Text(
              subTitle,
              style: TextStyle(
                  color: MyColours.color_515151,
                  fontSize: ScreenUtil().setSp(32)),
            ),
          ),
        ],
      ),
    );
  }

  ///获取经理数据
  Future<bool> _setIsStoreSms() async {
    Map<String, String> params = {
      'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,
      'key': 'is_store_sms',
      'value': swich ? '1' : '0'
    };

    bool success =
        await menuManageProvider.setConfing(context, params, needToast: false);
    if (success) {
      return true;
    } else {
      return false;
    }
  }

  ///
  Future<bool> _setStoreDate() async {
    Map<String, String> params = {
      'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,
      'key': 'store_date',
      'value': dayC.text.trim()
    };

    bool success =
        await menuManageProvider.setConfing(context, params, needToast: false);
    if (success) {
      return true;
    } else {
      return false;
    }
  }

  _setData() async {
    await Future.wait<bool>([_setIsStoreSms(), _setStoreDate()])
        .then((results) async {
      print(results[0]);
      if (results[0] && results[1]) {
        //都成功
        Utils.showToast('设置成功');
      } else {
        if (results[0]) {
          //取酒是否需要短信验证码成功
          Utils.showToast('取酒需要提供短信验证码设置成功');
        } else {
          //取酒是否需要短信验证码成功失败
          Utils.showToast('取酒需要提供短信验证码设置失败');
        }
        if (results[1]) {
          //超期提醒天数成功
          Utils.showToast('超期提醒天数设置成功');
        } else {
          //超期提醒天数失败
          Utils.showToast('超期提醒天数设置失败');
        }
      }
    }).catchError((e) {
      print(e);
    });
  }

  @override
  Widget build(BuildContext context) {
    menuManageProvider =
        Provider.of<MenuManageProvider>(context, listen: false);
    return KeyboardDismissOnTap(
        child: Scaffold(
      backgroundColor: MyColours.color_ffffff,
      appBar: SystemAppBar(
        '存酒配置',
      ),
      body: Column(
        children: [
          Expanded(
            child: SingleChildScrollView(
                child: Column(
              children: [
                InkWell(
                    onTap: () {
                      setState(() {
                        swich = !swich;
                      });
                    },
                    child: Container(
                      height: w(48),
                      padding: EdgeInsets.symmetric(horizontal: w(16)),
                      child: Row(
                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                        children: [
                          Text(
                            '取酒需要提供短信验证码',
                            style: TextStyle(
                                fontSize: font(16),
                                color: MyColours.color_515151),
                          ),
                          Image.asset(
                            Utils.getImgPath(swich ? 'swich_on' : 'swich_off'),
                            width: w(44),
                          )
                        ],
                      ),
                    )),
                _divider(),
                Container(
                    height: w(48),
                    padding: EdgeInsets.symmetric(horizontal: w(16)),
                    child: _textfield(context, '存酒超期提醒', '请输入', dayC, dayF, '天',
                        inputType:
                            TextInputType.numberWithOptions(decimal: true))),
                _divider(),
              ],
            )),
          ),
          RoundButton(
            text: '保存',
            height: w(40),
            margin: EdgeInsets.only(
                left: w(45), right: w(45), top: w(13), bottom: w(26)),
            bgColor: MyColours.color_438E93,
            textColor: MyColours.color_F9F9F9,
            isBold: true,
            fontSize: 32,
            radius: r(8),
            onPressed: () async {
              if (dayC.text.trim().length == 0) {
                Utils.showToast('请输入存酒超期提醒天数!');
                return;
              }
              if (!Utils.isInteger(dayC.text.trim())) {
                Utils.showToast('请输入数字!');
                return;
              }

              //接口保存
              //
              //调用接口

              _setData();
            },
          )
        ],
      ),
    ));
  }
}