message_online_page.dart 5.54 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/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 MessageOnlinePage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return new MessageOnlinePageState();
  }
}

class MessageOnlinePageState extends State<MessageOnlinePage> {
  EasyRefreshController _controller;

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

  int selectedIndex = 0;

  int offset=0;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    bus.on("remove_untreated_message", (args) {
      MessageModel messageModel =
          Provider.of<MessageModel>(context, listen: false);
      messageModel.removeUntreatedMessageByMid(args.toString());
      MessageDialogModel messageDialogModel =
          Provider.of<MessageDialogModel>(context, listen: false);
      messageDialogModel.removeMessage(args.toString());
    });
    _controller = EasyRefreshController();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      getMessage();
    });
  }

  //获取未处理在线预订消息
  getMessage({bool showLoading = true}) {
    UserModel userModel = Provider.of<UserModel>(context, listen: false);
    Map<String, String> params = {
      "sid": userModel.user.sellerid,
      "type_id": "10", //1提前点餐2内部预订10在线预订
      "status": selectedIndex.toString(),
      "offset": offset.toString(),
      "limit": "20",
    };
    MessageModel messageModel =
        Provider.of<MessageModel>(context, listen: false);
    messageModel.getMessages(context, params, showLoading: showLoading);
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Container(
      color: MyColours.color_f5f5f5,
      child: Column(
        children: [
          Container(
            width: double.infinity,
            height: ScreenUtil().setWidth(84),
            color: MyColours.color_ffffff,
            child: Row(
              children: [
                Expanded(
                    child: GestureDetector(
                      behavior: HitTestBehavior.opaque,
                  onTap: () {
                        if(selectedIndex==0)return;
                    setState(() {
                      selectedIndex = 0;
                      getMessage(showLoading: true);
                    });
                  },
                  child: Center(
                    child: Text("未处理",style: TextStyle(color: selectedIndex==0?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),),
                  )
                )),
                Expanded(
                    child: GestureDetector(
                      behavior: HitTestBehavior.opaque,
                      onTap: () {
                        if(selectedIndex==1)return;
                        setState(() {
                          selectedIndex = 1;
                          getMessage(showLoading: true);
                        });
                      },
                      child: Center(
                        child: Text("已处理",style: TextStyle(color: selectedIndex==1?selectedColor:unSelectedColor,fontSize: ScreenUtil().setSp(30)),),
                      )
                    ))
              ],
            ),
          ),
          Expanded(
            child: Consumer<MessageModel>(
              builder: (context, model, _) {
                if (model.pageState != PageState.Success) {
                  return ExceptionPage(
                    pageState: model.pageState,
                    callback: () {
                      offset=0;
                      getMessage(showLoading: true);
                    },
                    emptyMsg: "暂时没有${selectedIndex==0?'未处理':'已处理'}的在线预订消息哦",
                    emptyImg: "empty_search",
                    showMsg: "加载中,请稍后...",
                  );
                } else {
                  return EasyRefresh.custom(
                    controller: _controller,
                    slivers: [
                      SliverList(
                        delegate: SliverChildBuilderDelegate(
                                (BuildContext context, int index) {
                              return MessageItem(model.messages[index],isTreated: selectedIndex==1,);
                            }, childCount: model.messages.length),
                      )
                    ],
                    onRefresh: () async {
                      offset=0;
                      getMessage(showLoading: false);
                    },
                    onLoad: ()async{
                      offset++;
                      getMessage(showLoading: false);
                    },
                  );
                }
              },
            ),
          )
        ],
      ),
    );
  }

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