messsage_item.dart 15.1 KB
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/message.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/widgets/common_button.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';

class MessageItemSim extends StatelessWidget {
  final Message message;
  final bool isTreated;
  MessageItemSim(this.message, {this.isTreated = false});

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    Color textColor =
        isTreated ? MyColours.color_999999 : MyColours.color_353535;
    String titleText = "";
    String subTitleTextFir = "";
    String subTitleTextSec = "";
    if (message.message_type == "10") {
      titleText = "在线预订";
      subTitleTextFir = '包间需求';
      subTitleTextSec = '就餐时间';
    } else if (message.message_type == "11") {
      titleText = "取消预订";
    } else if (message.message_type == "1") {
      titleText = "提前点餐";
      subTitleTextFir = '桌位信息';
      subTitleTextSec = '就餐时间';
    } else if (message.message_type == "12") {
      titleText = "在线买单";
      subTitleTextFir = '桌位信息';
      subTitleTextSec = '申请时间';
    } else if (message.message_type == "13") {
      titleText = "买单通知";
      subTitleTextFir = '桌位信息';
      subTitleTextSec = '申请时间';
    } else if (message.message_type == "14") {
      titleText = "发票申请";
      subTitleTextFir = '桌位信息';
      subTitleTextSec = '申请时间';
    }

    MessageDialogModel messageDialogModel =
        Provider.of<MessageDialogModel>(context, listen: false);
    return GestureDetector(
        onTap: () async {
          //true已处理跳转  false未处理列表不需要点击事件
          if (isTreated) {
            if (message.message_type == "10") {
              NavigatorUtil.goNotebookDetailPageSim(
                  context, message.rid.toString(), message.uid);
            } else if (message.message_type == "1") {
              NavigatorUtil.goHasOrderFoodPage(context, rid: message.rid);
            } else if (message.message_type == "11") {
              NavigatorUtil.goNotebookDetailPageSim(
                  context, message.rid.toString(), message.uid);
            } else if (message.message_type == "12") {
              //在线买单消息查看
              NavigatorUtil.goOnlineCheckDetailPage(context,
                  rid: '${message.rid}');
            } else if (message.message_type == "13") {
              //买单通知,跳转至买单详情查看
              NavigatorUtil.goOnlineCheckDetailPage(context,
                  rid: '${message.rid}');
            } else if (message.message_type == "14") {
              //发票详情页面跳转
              NavigatorUtil.goInvoiceDetailPage(context, rid: '${message.rid}');
            }
          } else {
            messageDialogModel.removeMessage(message.id);
            //message_type:10 跳转在线预订  11 取消订单  1 提前点餐
            if (message.message_type == "10") {
              NavigatorUtil.goHandleOnlinePageSim(
                  context, message.rid.toString(), message.id);
            } else if (message.message_type == "11") {
              NavigatorUtil.goNotebookDetailPageSim(
                  context, message.rid.toString(), message.uid);
              bus.emit("remove_untreated_message", message.id);

              Map<String, String> params = {
                "sid": Provider.of<UserModel>(context, listen: false)
                    .user
                    .sellerid,
                "id": message.id,
                "status": message.message_type == "1" ? "is_read" : "is_handle"
              };
              await messageDialogModel.setMessageStatus(context, params);
              bus.emit("refresh_untreated_num"); //刷新未读消息数目
            } else if (message.message_type == "1") {
              //提前点餐
              NavigatorUtil.goHasOrderFoodPage(context, rid: message.rid);
              bus.emit("remove_untreated_message", message.id);

              Map<String, String> params = {
                "sid": Provider.of<UserModel>(context, listen: false)
                    .user
                    .sellerid,
                "id": message.id,
                "status": message.message_type == "1" ? "is_read" : "is_handle"
              };
              await messageDialogModel.setMessageStatus(context, params);
              bus.emit("refresh_untreated_num"); //刷新未读消息数目
            } else if ('${message.message_type}' == "12") {
              //在线买单消息 去处理 跳转在线买单处理页面
              NavigatorUtil.goOnlineCheckEditPage(context,
                  rid: '${message.rid}', mid: message.id);
            } else if ('${message.message_type}' == "13") {
              //在线买单消息 去查看 跳转在线买单详情页面
              NavigatorUtil.goOnlineCheckDetailPage(context,
                  rid: '${message.rid}');
              bus.emit("remove_untreated_message", message.id);

              Map<String, String> params = {
                "sid": Provider.of<UserModel>(context, listen: false)
                    .user
                    .sellerid,
                "id": message.id,
                "status": message.message_type == "1" ? "is_read" : "is_handle"
              };
              await messageDialogModel.setMessageStatus(context, params);
              bus.emit("refresh_untreated_num"); //刷新未读消息数目
            } else if (message.message_type == "14") {
              //发票详情页面跳转
              NavigatorUtil.goInvoiceDetailPage(context, rid: '${message.rid}');
              bus.emit("remove_untreated_message", message.id);

              Map<String, String> params = {
                "sid": Provider.of<UserModel>(context, listen: false)
                    .user
                    .sellerid,
                "id": message.id,
                "status": message.message_type == "1" ? "is_read" : "is_handle"
              };
              await messageDialogModel.setMessageStatus(context, params);
              bus.emit("refresh_untreated_num"); //刷新未读消息数目
            }
          }
        },
        child: Stack(
          children: <Widget>[
            Container(
              // height: ScreenUtil().setWidth(290),
              margin: EdgeInsets.symmetric(
                  horizontal: ScreenUtil().setWidth(39),
                  vertical: ScreenUtil().setWidth(12)),
              padding: EdgeInsets.fromLTRB(
                  ScreenUtil().setWidth(12),
                  ScreenUtil().setWidth(45),
                  ScreenUtil().setWidth(21),
                  ScreenUtil().setWidth(43)),
              decoration: BoxDecoration(
                  color: MyColours.color_fefefe,
                  borderRadius: BorderRadius.all(
                      Radius.circular(ScreenUtil().setWidth(8)))),
              child: Column(
                mainAxisSize: MainAxisSize.min,
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Row(
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: <Widget>[
                      Text(
                        titleText,
                        style: TextStyle(
                            color: textColor, fontSize: ScreenUtil().setSp(28)),
                      ),
                      Spacer(),
                      Text(
                        '${message.cdateStr}',
                        style: TextStyle(
                            color: MyColours.color_999999,
                            fontSize: ScreenUtil().setSp(24)),
                      ),
                    ],
                  ),
                  VEmptyView(20),
                  message.message_type == "11"
                      ? Text(
                          message.rname != null
                              ? "${message.ddateStr}的${message.rnameStr}取消了预订"
                              : "${message.ddateStr} 取消了预订",
                          style: TextStyle(
                              color: textColor,
                              fontSize: ScreenUtil().setSp(28)),
                        )
                      : Column(
                          mainAxisSize: MainAxisSize.min,
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: <Widget>[
                            Text(
                              "${subTitleTextFir}:${message.message_type == '1' ? message.room_info : message.room_demand}",
                              style: TextStyle(
                                  color: textColor,
                                  fontSize: ScreenUtil().setSp(28)),
                            ),
                            VEmptyView(10),
                            Text(
                              "${subTitleTextSec}:${(message.message_type != '12' && message.message_type != '13' && message.message_type != '14') ? message.ddateStr : message.cdateStr}",
                              style: TextStyle(
                                  color: textColor,
                                  fontSize: ScreenUtil().setSp(28)),
                            ),
                            VEmptyView(10),
                            message.rnameStr == ''
                                ? SizedBox()
                                : Text(
                                    "预订人:${message.rnameStr}",
                                    style: TextStyle(
                                        color: textColor,
                                        fontSize: ScreenUtil().setSp(28)),
                                  ),
                          ],
                        ),
                  message.message_type == "11" ? VEmptyView(80) : VEmptyView(0)
                ],
              ),
            ),
            Positioned(
              right: ScreenUtil().setWidth(60),
              bottom: ScreenUtil().setWidth(55),
              child: Offstage(
                offstage: isTreated ? true : false,
                child: CommonButton(
                  width: 152,
                  height: 50,
                  fontSize: 30,
                  content: message.message_type == "10" ||
                          message.message_type == "12"
                      ? "立即处理"
                      : "立即查看",
                  state: 1,
                  onPress: () async {
                    messageDialogModel.removeMessage(message.id);
                    //message_type:10 跳转在线预订  11 取消订单  1 提前点餐
                    if (message.message_type == "10") {
                      NavigatorUtil.goHandleOnlinePageSim(
                          context, message.rid.toString(), message.id);
                    } else if (message.message_type == "11") {
                      NavigatorUtil.goNotebookDetailPageSim(
                          context, message.rid.toString(), message.uid);
                      bus.emit("remove_untreated_message", message.id);

                      Map<String, String> params = {
                        "sid": Provider.of<UserModel>(context, listen: false)
                            .user
                            .sellerid,
                        "id": message.id,
                        "status": message.message_type == "1"
                            ? "is_read"
                            : "is_handle"
                      };
                      await messageDialogModel.setMessageStatus(
                          context, params);
                      bus.emit("refresh_untreated_num"); //刷新未读消息数目
                    } else if (message.message_type == "1") {
                      //提前点餐
                      NavigatorUtil.goHasOrderFoodPage(context,
                          rid: message.rid);
                      bus.emit("remove_untreated_message", message.id);

                      Map<String, String> params = {
                        "sid": Provider.of<UserModel>(context, listen: false)
                            .user
                            .sellerid,
                        "id": message.id,
                        "status": message.message_type == "1"
                            ? "is_read"
                            : "is_handle"
                      };
                      await messageDialogModel.setMessageStatus(
                          context, params);
                      bus.emit("refresh_untreated_num"); //刷新未读消息数目
                    } else if ('${message.message_type}' == "12") {
                      //在线买单消息 去处理 跳转在线买单处理页面
                      NavigatorUtil.goOnlineCheckEditPage(context,
                          rid: '${message.rid}', mid: message.id);
                    } else if ('${message.message_type}' == "13") {
                      //在线买单消息 去查看 跳转在线买单详情页面
                      NavigatorUtil.goOnlineCheckDetailPage(context,
                          rid: '${message.rid}');
                      bus.emit("remove_untreated_message", message.id);

                      Map<String, String> params = {
                        "sid": Provider.of<UserModel>(context, listen: false)
                            .user
                            .sellerid,
                        "id": message.id,
                        "status": message.message_type == "1"
                            ? "is_read"
                            : "is_handle"
                      };
                      await messageDialogModel.setMessageStatus(
                          context, params);
                      bus.emit("refresh_untreated_num"); //刷新未读消息数目
                    } else if (message.message_type == "14") {
                      //发票详情页面跳转
                      NavigatorUtil.goInvoiceDetailPage(context,
                          rid: '${message.rid}');
                      bus.emit("remove_untreated_message", message.id);

                      Map<String, String> params = {
                        "sid": Provider.of<UserModel>(context, listen: false)
                            .user
                            .sellerid,
                        "id": message.id,
                        "status": message.message_type == "1"
                            ? "is_read"
                            : "is_handle"
                      };
                      await messageDialogModel.setMessageStatus(
                          context, params);
                      bus.emit("refresh_untreated_num"); //刷新未读消息数目
                    }
                  },
                ),
              ),
            )
          ],
        ));
  }
}