message_right_page.dart 2.58 KB
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.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/widgets/page_error.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:provider/provider.dart';

class MessageRightPage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return new MessageRightPageState();
  }
}

class MessageRightPageState extends State<MessageRightPage> {
  EasyRefreshController _controller;

  int offset = 0; //当前页数

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _controller = EasyRefreshController();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      getTreatedMessage();
    });
  }

  //获取未处理在线预订消息
  getTreatedMessage({bool showLoading = true}) {
    UserModel userModel = Provider.of<UserModel>(context, listen: false);
    Map<String, String> params = {
      "sid": userModel.user.sellerid,
      "type_id": "10",
      "status": "1",
      "offset": offset.toString(),
      "limit": "10",
    };
    MessageModel messageModel =
        Provider.of<MessageModel>(context, listen: false);
    messageModel.getTreatedMsg(context, params, showLoading: showLoading);
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Consumer<MessageModel>(
      builder: (context, model, _) {
        if (model.pageState != PageState.Success) {
          return ExceptionPage(
            pageState: model.pageState,
            callback: () {
              getTreatedMessage();
            },
            emptyMsg: "暂时没有已处理的消息哦",
            emptyImg: "empty_search",
            showMsg: "加载中,请稍后...",
          );
        } else {
          return EasyRefresh.custom(
            controller: _controller,
            slivers: [
              SliverList(
                delegate: SliverChildBuilderDelegate(
                    (BuildContext context, int index) {
                  return MessageItem(
                    model.treatedMsgs[index],
                    isTreated: true,
                  );
                }, childCount: model.treatedMsgs.length),
              )
            ],
            onRefresh: () async {
              getTreatedMessage(showLoading: false);
            },
          );
        }
      },
    );
  }
}