message_untreated_page.dart 6.25 KB
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/message.dart';
import 'package:one_key/models/new_unmessage_model.dart';
import 'package:one_key/pages/message/message_item_f.dart';
import 'package:one_key/pages/message/messsage_item.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/message_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/widgets/page_error.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:provider/provider.dart';
import 'package:one_key/utils/event_bus.dart';

/**
 * 未处理消息
 */
class MessageUntreatedPage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return new MessageUntreatedPageState();
  }
}

class MessageUntreatedPageState extends State<MessageUntreatedPage> {
  EasyRefreshController _controller;

  Color selectedColor = MyColours.color_199095;
  Color unSelectedColor = MyColours.color_999999;

  int selectedIndex = 0;

  int offset = 0;
  MessageModel messageModel;
  UserModel userModel;
  MessageDialogModel messageDialogModel;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    // //移除在线预订消息
    // bus.on("remove_untreated_message", (args) {
    //   messageModel.removeUntreatedMessageByMid(args.toString());
    //   messageDialogModel.removeMessage(args.toString());
    // });
    _controller = EasyRefreshController();
    // messageModel.pageState = PageState.Loading;
    WidgetsBinding.instance.addPostFrameCallback((_) {
      // setState(() {
      //   messageModel.pageState = PageState.Loading;
      // });
      messageModel.pageStateUn = PageState.Loading;
      messageModel.notifyListeners();
       offset = 0;
      getMessage();
    });
    bus.on("refresh_untreated_list", (arg) {
       offset = 0;
      getMessage();
    });
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    bus.off("refresh_untreated_list");
  }

  // //三种分类各自的未读消息数目
  // _getUnMsgNum() async {
  //   Map<String, String> params = {"sid": userModel.user.sellerid};
  //   await messageModel.getUnMsgNum(context, params);
  // }

  //获取在线预订消息status 0未处理 1已处理
  getMessage({bool showLoading = true}) async {
    Map<String, String> params = {
      "sid": userModel.user.sellerid,
      // "type_id": "10", //1提前点餐2内部预订10在线预订
      // "status": '0',
      "offset": offset.toString(),
      "limit": "1000",
    };

    await messageModel.getNewGetUntreatedMsgList(context, params,
        showLoading: showLoading);
    _cancelMessage();
    // _getUnMsgNum();
  }

  _cancelMessage() async {
    String messageids = ''; //超过24小时
    for (NewUnmessage item in messageModel.messagesUn) {
      if (item.message_type == '11') {
        DateTime cdate = DateTime.fromMillisecondsSinceEpoch(
            int.parse(item.cdate.toString()) * 1000);
        DateTime nowdate = DateTime.fromMillisecondsSinceEpoch(
            int.parse(item.cdate.toString()) * 1000);

        int hours = nowdate.difference(cdate).inHours;
        if (hours > 24) {
          messageids += '${item.id},';
        }
      }
    }
    if (messageids.endsWith(',')) {
      messageids = messageids.substring(0, messageids.length - 1);
      setMessageStatus(messageids);
    }
  }

  //设置消息状态
  setMessageStatus(String messageids) async {
    Map<String, String> params = {
      "id": messageids,
    };
    await messageModel.setMessageStatus(context, params);
     offset = 0;
    getMessage(showLoading: false);
  }

  @override
  Widget build(BuildContext context) {
    messageModel = Provider.of<MessageModel>(context, listen: true);
    userModel = Provider.of<UserModel>(context, listen: false);
    messageDialogModel =
        Provider.of<MessageDialogModel>(context, listen: false);
    return Container(
      color: MyColours.color_ffffff,
      child: Consumer<MessageModel>(
        builder: (context, model, _) {
          if (model.pageStateUn != PageState.Success) {
            return ExceptionPage(
              pageState: model.pageStateUn,
              callback: () {
                offset = 0;
                getMessage(showLoading: true);
              },
              emptyMsg: "暂时没有未处理的消息哦",
              emptyImg: "empty_search",
              showMsg: "加载中,请稍后...",
            );
          } else {
            return EasyRefresh.custom(
              controller: _controller,
              slivers: [
                SliverList(
                  delegate: SliverChildBuilderDelegate(
                      (BuildContext context, int index) {
                    NewUnmessage message = model.messagesUn[index];
                    if (message.message_type == "10") {
                      // titleText = "在线预订";

                    } else if (message.message_type == "11") {
                      // titleText = "取消预订";
                    } else if (message.message_type == "1") {
                      // titleText = "提前点餐";

                    } else if (message.message_type == "12") {
                      // titleText = "在线买单";

                    } else if (message.message_type == "13") {
                      // titleText = "买单通知"; //没有

                    } else if (message.message_type == "14") {
                      // titleText = "发票申请"; //没有

                    }
                    return MessageItemF(
                      model.messagesUn[index],
                      isTreated: false,
                    );
                  }, childCount: model.messagesUn.length),
                )
              ],
              onRefresh: () async {
                offset = 0;
                getMessage(showLoading: false);
              },
              onLoad: () async {
                offset++;
                getMessage(showLoading: false);
              },
            );
          }
        },
      ),
    );
  }
}