message_dialog_item.dart 12.4 KB
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/message.dart';
import 'package:one_key/pages/detail/handle_online_page.dart';
import 'package:one_key/pages/home/home_page.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';

import '../../app.dart';

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

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    String title = ''; //大标题
    String subTitleFir = ''; //第一行标题
    String subTitleSec = ''; //第二行标题
    String subTitleThr = ''; //第三行标题
    if (message.message_type == "10") {
      title = "在线预订";
      subTitleFir = '包间需求';
      subTitleSec = '就餐时间';
      subTitleThr = '预订人';
    } else if (message.message_type == "11") {
      title = "取消预订";
    } else if (message.message_type == "1") {
      title = "提前点餐";
      subTitleFir = '桌位信息';
      subTitleSec = '就餐时间';
      subTitleThr = '预订人';
    } else if (message.message_type == "12") {
      title = "在线买单";
      subTitleFir = '桌位信息';
      subTitleSec = '申请时间';
      subTitleThr = '预订人';
    } else if (message.message_type == "13") {
      title = "买单通知";
      subTitleFir = '桌位信息';
      subTitleSec = '申请时间';
      subTitleThr = '预订人';
    } else if (message.message_type == "14") {
      title = "发票申请";
      subTitleFir = '桌位信息';
      subTitleSec = '申请时间';
      subTitleThr = '预订人';
    }

    Color textColor =
        isTreated ? MyColours.color_999999 : MyColours.color_353535;
    MessageDialogModel messageDialogModel =
        Provider.of<MessageDialogModel>(context, listen: false);
    return GestureDetector(
        onTap: () {
          if (isTreated) {
            if (message.message_type == "10") {
              NavigatorUtil.goNotebookDetailPage(
                  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.goNotebookDetailPage(
                  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}');
            }
          }
        },
        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(
                        title,
                        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.rname != ''
                              ? "${message.ddateStr}的${message.rnameStr}取消了预订"
                              : "${message.ddateStr} 取消了预订",
                          style: TextStyle(
                              color: textColor,
                              fontSize: ScreenUtil().setSp(28)),
                        )
                      : Column(
                          mainAxisSize: MainAxisSize.min,
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: <Widget>[
                            Text(
                              "${subTitleFir}:${message.room_demand}",
                              style: TextStyle(
                                  color: textColor,
                                  fontSize: ScreenUtil().setSp(28)),
                            ),
                            VEmptyView(10),
                            Text(
                              "${subTitleSec}:${message.ddateStr}",
                              style: TextStyle(
                                  color: textColor,
                                  fontSize: ScreenUtil().setSp(28)),
                            ),
                            VEmptyView(10),
                            message.rname != null && message.rname != ''
                                ? Text(
                                    "${subTitleThr}:${message.rnameStr}",
                                    style: TextStyle(
                                        color: textColor,
                                        fontSize: ScreenUtil().setSp(28)),
                                  )
                                : SizedBox(),
                          ],
                        )
                ],
              ),
            ),
            Positioned(
              right: ScreenUtil().setWidth(60),
              bottom: ScreenUtil().setWidth(55),
              child: Offstage(
                offstage: isTreated ? true : false,
                child: CommonButton(
                  width: 160,
                  height: 48,
                  fontSize: 28,
                  content: message.message_type == "10" ||
                          message.message_type == "12"
                      ? "立即处理"
                      : "立即查看",
                  state: 1,
                  onPress: () async {
                    messageDialogModel.removeMessage(message.id);

                    if (message.message_type == "10") {
                      NavigatorUtil.goHandleOnlinePage(
                          context, message.rid.toString(), message.id,
                          replace: messageDialogModel.messages.isEmpty
                              ? true
                              : false);
                    } else if (message.message_type == "11") {
                      NavigatorUtil.goNotebookDetailPage(
                          context, message.rid.toString(), message.uid,
                          replace: messageDialogModel.messages.isEmpty
                              ? true
                              : false);
                      bus.emit("remove_untreated_message", message.id);
                      Map<String, String> params = {
                        "sid": Provider.of<UserModel>(context, listen: false)
                            .user
                            .sellerid,
                        "id": message.id,
                        "status": "is_handle"
                      };
                      await messageDialogModel.setMessageStatus(
                          context, params);
                      bus.emit("refresh_untreated_num"); //刷新未读消息数目
                    } else if (message.message_type == "1") {
                      //提前点餐
                      NavigatorUtil.goHasOrderFoodPage(context,
                          rid: message.rid,
                          replace: messageDialogModel.messages.isEmpty
                              ? true
                              : false);
                      bus.emit("remove_untreated_message", message.id);
                      Map<String, String> params = {
                        "sid": Provider.of<UserModel>(context, listen: false)
                            .user
                            .sellerid,
                        "id": message.id,
                        "status": "is_read"
                      };
                      await messageDialogModel.setMessageStatus(
                          context, params);
                      bus.emit("refresh_untreated_num"); //刷新未读消息数目
                    } else if ('${message.message_type}' == "12") {
                      //在线买单消息 去处理 跳转在线买单处理页面
                      await NavigatorUtil.goOnlineCheckEditPage(context,
                          rid: '${message.rid}',
                          mid: message.id,
                          replace: messageDialogModel.messages.isEmpty
                              ? true
                              : false);
                    } else if ('${message.message_type}' == "13") {
                      //在线买单消息 去查看 跳转在线买单详情页面
                      NavigatorUtil.goOnlineCheckDetailPage(context,
                          rid: '${message.rid}',
                          replace: messageDialogModel.messages.isEmpty
                              ? true
                              : false);
                      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}',
                          replace: messageDialogModel.messages.isEmpty
                              ? true
                              : false);
                      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"); //刷新未读消息数目
                    }
                  },
                ),
              ),
            )
          ],
        ));
  }
}