message_untreated_page.dart 5.12 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/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((_) {
      // getMessage();
      // setState(() {
      //   messageModel.pageState = PageState.Loading;
      // });
      messageModel.pageState = PageState.Loading;
      messageModel.notifyListeners();
    });
  }

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

  //三种分类各自的未读消息数目
  _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": selectedIndex.toString(),
      "offset": offset.toString(),
      "limit": "20",
    };

    await messageModel.getMessages(context, params, showLoading: showLoading);
    _getUnMsgNum();
  }

  @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.pageState != PageState.Success) {
            return ExceptionPage(
              pageState: model.pageState,
              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) {
                    Message message = model.messages[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.messages[index],
                      isTreated: selectedIndex == 1,
                    );
                  }, childCount: model.messages.length),
                )
              ],
              onRefresh: () async {
                offset = 0;
                getMessage(showLoading: false);
              },
              onLoad: () async {
                offset++;
                getMessage(showLoading: false);
              },
            );
          }
        },
      ),
    );
  }
}