message_treated_page.dart 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/models/message_menu_model.dart';
import 'package:one_key/pages_sim/message/message_item_f.dart';
import 'package:one_key/pages_sim/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/h_empty_view.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';

import '../../generated/l10n.dart';
import '../../provider/collect_store_provider.dart';

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

class MessageTreatedPageSimState extends State<MessageTreatedPageSim> {
  Color selectedColor = MyColours.color_199095;
  Color unSelectedColor = MyColours.color_999999;

  int selectedIndex = 0;

  int offset = 0;
  late MessageModel messageModel;
  late UserModel userModel;
  MessageDialogModel? messageDialogModel;
  List<MessageMenuModel> menuTitle = [];
  String typeid = ''; //默认全部

  CollectStoreProvider? collectStoreProvider;
  EasyRefreshController? easyRefreshController;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();


    // //移除在线预订消息
    // bus.on("remove_untreated_message", (args) {
    //   messageModel.removeUntreatedMessageByMid(args.toString());
    //   messageDialogModel.removeMessage(args.toString());
    // });

    // messageModel.pageState = PageState.Loading;
    WidgetsBinding.instance.addPostFrameCallback((_) {
          _initMenu();
      messageModel.controller = EasyRefreshController();

      messageModel.pageState = PageState.Loading;
      messageModel.notifyListeners();
      getMessage(typeid);
      getSellerVersion();
    });
    bus.on("refresh_treated_list", (arg) {
      getMessage(typeid);
    });
  }

  getSellerVersion() async {
    await collectStoreProvider!.getSellerVersion(context);

    setState(() {});
  }

  _initMenu() {
    MessageMenuModel model1 = MessageMenuModel();
    model1.title = S.of(context).all;
    model1.select = true;
    MessageMenuModel model2 = MessageMenuModel();
    model2.title = S.of(context).in_store_messages;
    model2.select = false;
    MessageMenuModel model3 = MessageMenuModel();
    model3.title = S.of(context).online_reservation;
    model3.select = false;
    // MessageMenuModel model4 = MessageMenuModel();
    // model4.title = '提前点餐';
    // model4.select = false;
    // MessageMenuModel model5 = MessageMenuModel();
    // model5.title = '在线买单';
    // model5.select = false;
    // MessageMenuModel model6 = MessageMenuModel();
    // model6.title = '会员充值';
    // model6.select = false;

    // MessageMenuModel model7 = MessageMenuModel();
    // model7.title = '存酒超期';
    // model7.select = false;

    // MessageMenuModel model8 = MessageMenuModel();
    // model8.title = '纪念日';
    // model8.select = false;

    menuTitle = [
      model1,
      model2,
      model3,
      // model4,
      // model5,
      // model6,
      // model7,
      // model8
    ];
    // menuTitle = [model1, model2, model3, model4, model5];
  }

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

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

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

    await messageModel.getMessagesSim(context, params, showLoading: showLoading,
        callback: () {
      // messageModel.controller.resetLoadState();
      // messageModel.controller.callLoad();
    });
    // _getUnMsgNum();
  }

  @override
  Widget build(BuildContext context) {
    collectStoreProvider =
        Provider.of<CollectStoreProvider>(context, listen: true);
    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,
      margin: EdgeInsets.only(top: ScreenUtil().setWidth(10)),
      child: Consumer<MessageModel>(
        builder: (context, model, _) {
          return Column(children: [
            Container(
              color: MyColours.color_ffffff,
              height: ScreenUtil().setWidth(50),
              margin: EdgeInsets.only(bottom: ScreenUtil().setWidth(50)),
              child: Row(
                children: [
                  HEmptyView(48),
                  Expanded(
                      child: SizedBox(
                          height: ScreenUtil().setWidth(50),
                          child: ListView.builder(
                              itemCount: menuTitle.length,
                              shrinkWrap: true,
                              scrollDirection: Axis.horizontal,
                              itemBuilder: (BuildContext contxt, int index) {
                                return InkWell(
                                  onTap: () {
                                    for (MessageMenuModel item in menuTitle) {
                                      item.select = false;
                                    }
                                    menuTitle[index].select = true;
                                    setState(() {});
                                    offset = 0;
                                    // 1提前点餐/2内部预订/10在线预订/15店内消息传/12在线买单

                                    if (index == 0) {
                                      typeid = '';
                                    } else if (index == 1) {
                                      //店内消息
                                      typeid = '15';
                                    } else if (index == 2) {
                                      //在线预订
                                      typeid = '10';
                                    }
                                    // else if (index == 3) {
                                    //   //提前点餐
                                    //   typeid = '1';
                                    // } else if (index == 4) {
                                    //   //在线买单
                                    //   typeid = '12';
                                    // } else if (index == 5) {
                                    //   //会员充值
                                    //   typeid = '17';
                                    // } else if (index == 6) {
                                    //   //存酒超期
                                    //   typeid = '18';
                                    // }
                                    // else if (index == 7) {
                                    //   //纪念日
                                    //   typeid = '19';
                                    // }
                                    getMessage(typeid, showLoading: true);
                                  },
                                  child: Container(
                                    // width: ScreenUtil().setWidth(104 * 2),
                                    // height: ScreenUtil().setWidth(80),
                                    margin: EdgeInsets.only(
                                      right: ScreenUtil().setWidth(15),
                                    ),
                                    padding: EdgeInsets.symmetric(
                                        horizontal: ScreenUtil().setWidth(16),
                                        vertical: ScreenUtil().setWidth(8)),
                                    alignment: Alignment.center,
                                    decoration: BoxDecoration(
                                        borderRadius: BorderRadius.circular(
                                            ScreenUtil().setWidth(16)),
                                        color: menuTitle[index].select
                                            ? MyColours.color_438E93
                                            : MyColours.color_ffffff,
                                        border: Border.all(
                                            color: menuTitle[index].select
                                                ? MyColours.color_438E93
                                                : MyColours.color_BFC4D4,
                                            width: ScreenUtil().setWidth(2))),
                                    child: Text(
                                      menuTitle[index].title!,
                                      overflow: TextOverflow.ellipsis,
                                      style: TextStyle(
                                          color: menuTitle[index].select
                                              ? MyColours.color_ffffff
                                              : MyColours.color_BFC4D4,
                                          fontSize: ScreenUtil().setSp(24),
                                          decoration: TextDecoration.none,
                                          fontWeight: FontWeight.normal),
                                    ),
                                  ),
                                );
                              })))
                ],
              ),
            ),
            Expanded(
                child: Container(
                    color: MyColours.color_ffffff,
                    child: model.pageState != PageState.Success
                        ? ExceptionPage(
                            pageState: model.pageState,
                            callback: () {
                              offset = 0;
                              getMessage(typeid, showLoading: true);
                            },
                            emptyMsg: "暂时没有已处理的消息哦",
                            emptyImg: "empty_search",
                            showMsg: "加载中,请稍候...",
                          )
                        : EasyRefresh.custom(
                            controller: messageModel.controller,
                            slivers: [
                              SliverList(
                                delegate: SliverChildBuilderDelegate(
                                    (BuildContext context, int index) {
                                  return MessageItemFSim(
                                    model.messagesHas[index],
                                    collectStoreProvider,
                                    isTreated: true,
                                  );
                                }, childCount: model.messagesHas.length),
                              )
                            ],
                            onRefresh: () async {
                              offset = 0;
                              getMessage(typeid, showLoading: false);
                            },
                            onLoad: () async {
                              offset++;

                              getMessage(typeid, showLoading: false);
                            },
                          )))
          ]);
        },
      ),
    );
  }
}