message_order_page.dart 4.95 KB
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/pages/message/messsage_item.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';

/**
 * 提前点餐消息
 */
class MessageOrderPage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return new MessageOrderPageState();
  }
}

class MessageOrderPageState extends State<MessageOrderPage> {
  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();
    _controller = EasyRefreshController();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      getMessages();
    });
  }

  //获取消息
  getMessages({bool showLoading = true}) {
    UserModel userModel = Provider.of<UserModel>(context, listen: false);
    Map<String, String> params = {
      "sid": userModel.user.sellerid,
      "type_id": "1",
      "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;
                            getMessages();
                          });
                        },
                        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;
                            getMessages();
                          });
                        },
                        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;
                      getMessages();
                    },
                    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;
                      getMessages(showLoading: false);
                    },
                    onLoad: ()async{
                      offset++;
                      getMessages(showLoading: false);
                    },
                  );
                }
              },
            ),
          )
        ],
      ),
    );
  }
}