feast_setmeal_manage_page.dart 8.05 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> {
  late 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();
  }

  ///获取宴会套餐
_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.feastSetmealEditDialog(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.goFeastDishSharePage(context, data);
              },
              child: Text(
                '预览&分享',
                style: TextStyle(
                    fontSize: font(16), color: MyColours.color_438E93),
              )),
          HEmptyView(32),
          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,
        resizeToAvoidBottomInset: false,

        /// 这里必须禁止重绘
        appBar: SystemAppBar(
          '宴会套餐',
          needWhite: true,
          bgColor: MyColours.color_438E93,
          titleColor: MyColours.color_F6F6F6,
          onTap: () {
            if (Navigator.canPop(context)) {
              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元  不可议价'
                  });
            }
          }),
        ));
  }
}