message_left_page.dart 2.42 KB
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.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:provider/provider.dart';
import 'package:one_key/utils/event_bus.dart';

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

class MessageLeftPageState extends State<MessageLeftPage> {

  EasyRefreshController _controller;

  @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((_){
      getUntreatedMessage();
    });
  }

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

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Selector<MessageModel,List>(
      selector: (context,model)=>model.untreatedMsgs,
      builder: (context,messages,child){
        return EasyRefresh.custom(
          controller: _controller,
          slivers: [
            SliverList(
              delegate:
              SliverChildBuilderDelegate((BuildContext context, int index) {
                return MessageItem(messages[index]);
              },childCount: messages.length),
            )
          ],onRefresh: () async {
          getUntreatedMessage();
        },);
      },
    );
  }

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