feast_setmeal_manage_page.dart 7.39 KB
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/setmeal_model.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';

import '../../../constant/state.dart';
import '../../../provider/feast_model.dart';
import '../../../provider/user_model.dart';
import '../../../res/colors.dart';
import '../../../utils/dialog_util.dart';
import '../../../utils/event_bus.dart';
import '../../../utils/screen_util.dart';
import '../../../utils/utils.dart';
import '../../../widgets/h_empty_view.dart';
import '../../../widgets/page_exception.dart';
import '../../../widgets/round_button.dart';
import '../../../widgets/system_app_bar.dart';

/**
 * 套餐管理
 */

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

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

class _FeastSetmealManagePageState extends State<FeastSetmealManagePage> {
  FeastModel feastModel;
  @override
  void initState() {
    super.initState();
    Utils.changeStatusColor(color: MyColours.color_438E93);
    WidgetsBinding.instance.addPostFrameCallback((_) {
      _getSetmeal();
      // scrollController.jumpTo(scrollController.position.minScrollExtent);
    });
    bus.on("feast_setmeal_list", (arg) {
      _getSetmeal();
    });
  }

  @override
  void dispose() {
    bus.off('feast_setmeal_list');
    super.dispose();
  }

  ///获取宴会分类
  Future<bool> _getSetmeal({bool isShowLoading = true}) async {
    await feastModel.getSetmeal(context, isShowLoading: isShowLoading);
  }

  _setSetmeal(String mealName, String price, String bargaining) async {
    Map<String, String> params = {
      "sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
      'meal_name': mealName,
      'price': price,
      'bargaining': bargaining
    };
    // if (widget.othersetSunModel != null) {
    //   params['id'] = widget.othersetSunModel.id;
    // }
    bool success = await feastModel.setSetmeal(context, params);
    if (success) {
      Utils.showToast('添加成功');
      bus.emit('feast_setmeal_list');

      // _getWine(isShowLoading: true);
    }
  }

  Widget buildFeastTypeHeader() {
    return RoundButton(
      onPressed: () async {
        DialogUtil.feastDishEditDialog(context,
            title: '新建套餐',
            nametitle: '套餐名称',
            pricetitle: '套餐价格',
            swichtitle: '是否议价', onTap: (Map map) {
          String per = map['per'];
          String name = map['name'];
          String can = map['can'];
          print(can);
          _setSetmeal(name, per, can);
        });
      },
      text: '添加一项',
      fontSize: 32,
      isBold: false,
      height: h(32),
      width: w(80),
      margin: EdgeInsets.only(top: w(18), bottom: w(4)),
      textColor: MyColours.color_438E93,
      gradientStart: MyColours.color_ffffff,
      gradientEnd: MyColours.color_ffffff,
      borderColor: MyColours.color_438E93,
      radius: r(6),
    );
  }

  Widget buildFeastTypeItem(SetMealSunModel data, int index) {
    return Container(
      height: h(48),
      margin: EdgeInsets.only(top: w(12)),
      decoration: BoxDecoration(
          border: Border(
              bottom:
                  BorderSide(width: w(0.5), color: MyColours.color_E7E7E7))),
      child: Row(
        children: [
          Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text(
                data.mealName,
                style: TextStyle(
                    fontSize: font(16), color: MyColours.color_E6000000),
              ),
              VEmptyView(12),
              Text(
                '${data.price}元  ${data.bargaining == '1' ? '可议价' : '不可议价'}',
                style: TextStyle(
                    fontSize: font(12), color: MyColours.color_999999),
              )
            ],
          ),
          Spacer(),
          InkWell(
              onTap: () {
                NavigatorUtil.goFeastSetmealManageEditPage(context, data.id);
              },
              child: Text(
                '修改',
                style: TextStyle(
                    decoration: TextDecoration.underline,
                    fontSize: font(16),
                    color: MyColours.color_438E93),
              )),
          HEmptyView(32),
          InkWell(
              onTap: () {
                //已经传到服务器,弹提醒窗口,是否删除
                //修改之前有内容,则弹框
                DialogUtil.cupertinoAlertDialogFeast(context,
                    rTitle: '删除',
                    title: "是否确认删除",
                    content: data.mealName, lCallback: () {
                  print("取消");
                }, rCallback: () async {
                  print("确定");
                  Map<String, String> pramas = {'id': data.id};
                  bool success = await feastModel.delSetmeal(context, pramas);
                  if (success) {
                    Utils.showToast('删除成功');
                    _getSetmeal(isShowLoading: true);
                  }
                });
              },
              child: Image.asset(
                Utils.getImgPath('f_delete_red'),
                width: w(32),
                height: w(32),
              )),
          HEmptyView(32),
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    feastModel = Provider.of<FeastModel>(context, listen: true);
    return Scaffold(
      backgroundColor: MyColours.color_ffffff,
      appBar: SystemAppBar(
        '套餐管理',
        needWhite: true,
        bgColor: MyColours.color_438E93,
        titleColor: MyColours.color_F6F6F6,
        onTap: () {
          Navigator.pop(context);
        },
      ),
      body: NestedScrollView(
          // controller: _scrollViewController,
          headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
        return <Widget>[
          SliverAppBar(
            pinned: true,
            floating: false,
            leading: null,
            backgroundColor: MyColours.color_ffffff,
            expandedHeight: ScreenUtil().setWidth(56 * 2),
            automaticallyImplyLeading: false,
            title: buildFeastTypeHeader(),
            // flexibleSpace: FlexibleSpaceBar(
            //     collapseMode: CollapseMode.pin,
            //     title: buildFeastTypeHeader())
          )
        ];
      }, body: Consumer<FeastModel>(builder: (context, model, _) {
        if (model.pageStateSetmeal != PageState.Success) {
          return ExceptionPage(
            pageState: model.pageStateSetmeal,
            callback: () {
              _getSetmeal();
            },
            emptyMsg: "暂时没有套餐哦",
            emptyImg: "empty_search",
            showMsg: "加载中,请稍后...",
          );
        } else {
          return ListView.builder(
              itemCount: model.setmealData.length,
              padding: EdgeInsets.only(left: w(16)),
              itemBuilder: (BuildContext context, int index) {
                SetMealSunModel data = model.setmealData[index];
                return buildFeastTypeItem(data, index);
                // '1299套餐', '1499元  不可议价'
              });
        }
      })),
    );
  }
}