import 'package:flutter/material.dart';
import 'package:liftmanager/widgets/app_bar.dart';
import '../provide/websocket.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../common/style/style.dart';
import './chat_detail/chat_content_view.dart';
import '../model/conversation.dart';
import 'package:provider/provider.dart';
import 'package:liftmanager/widgets/load_image.dart';
import 'package:liftmanager/internal/bbs/model/talk_model.dart';
import 'package:liftmanager/utils/url.dart';
import 'package:liftmanager/utils/log_util.dart';
import 'dart:convert';
import 'package:dart_notification_center/dart_notification_center.dart';
import 'package:liftmanager/utils/fast_notification.dart';
import 'package:liftmanager/routers/fluro_navigator.dart';
import 'package:liftmanager/internal/friends/friends_router.dart';
import 'package:liftmanager/routers/routers.dart';
import 'package:liftmanager/common/common.dart';
import 'package:flustars/flustars.dart' as flustars;
import 'package:shared_preferences/shared_preferences.dart';
import 'package:liftmanager/utils/toast.dart';
import 'package:image_picker/image_picker.dart';
import 'package:liftmanager/net/api_service.dart';
import 'package:liftmanager/utils/theme_utils.dart';
import 'package:liftmanager/widgets/chat_list_view.dart';

class ChatDetailPage extends StatefulWidget {
  ChatDetailPage(this.id, this.type,this.toUserId);
  final String id;
  final String type;
  final String toUserId;
  @override
  _ChatDetailPageState createState() => _ChatDetailPageState();
  // _ChatDetailPageState createState() => _ChatDetailPageState(type,index);
}

class _ChatDetailPageState extends State<ChatDetailPage> {
  bool hasText = false;
  // String type0;
  // String index0;
  int type = 0;
  int index = 1;
  List<dynamic> msgList = [];
  List<dynamic> msgListBack = [];
  List<dynamic> assList = [];
  bool showEmoji = false;
  bool hasMore = true;
  int _page = 0;
  int pageSize = 10;
  // int index = int.parse("3");
  Conversation data;
  // _ChatDetailPageState(this.type0,this.index0);
  WebSocketProvide provider = WebSocketProvide();
  ScrollController _scrollController;
  List<dynamic> userList;
  List<dynamic> storyList = [];
  List<dynamic> storyListUserOnline = [];
  //避免从附近的人打招呼重复的initRoom
  bool isTrim = false;
  int dataTable;

  final controller = TextEditingController();
  void _handleSubmitted(context, String text) {
    FocusScope.of(context).requestFocus(FocusNode());
    if (controller.text.length > 0) {
      FocusScope.of(context).requestFocus(FocusNode());
      print('发送${text}');
      print(type);
      // if(type == 1){
      print(666);
      Provider.of<WebSocketProvide>(context, listen: false)
          .sendMessage(context, text, widget.id,1,dataTable,widget.toUserId);
      showEmoji = false;
      hasMore = true;
      _page = 0;
      // }
      // new Future.delayed(Duration(milliseconds: 1000),(){
      //   setState(() {
      //     hasText = false;
      //     // messageList.add({'type':1,'text':text,});
      //     msgList = Provider.of<WebSocketProvide>(context,listen: false).historyMessageqqq;
      //   });
      // });

      controller.clear(); //清空输入框

      FocusScope.of(context).requestFocus(FocusNode());
      // _jumpBottom();
    } else {
      toasts("请输入");
    }
  }

  void _jumpBottom() {
    //滚动到底部
    _scrollController.animateTo(999999999,
        curve: Curves.easeOut, duration: Duration(milliseconds: 200));
  }

  String emoji = "😀,😁,😂,😃,😄,😅,😆,😉,😊,😋,😎,😍,😘,😗,😙,😚,😇,😐,😑,😶,😏,😣,😥,😮,😯,😪,😫,😴,😌,😛,😜,😝,😒,😓,😔,😕,😲,😷,😖,😞,😟,😤,😢,😭,😦,😧,😨,😬,😰,😱,😳,😵,😡,😠";
  List<String>emojiList = [];
  

  void setWebSocket() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();

    new Future.delayed(Duration(milliseconds: 500), () {
        Provider.of<WebSocketProvide>(context, listen: false)
            .incomeRoom(widget.id);
        getStringEvent(widget.id);
      });
  }

  void initJump() async {
    new Future.delayed(Duration(milliseconds: 500), () {
      FocusScope.of(context).requestFocus(FocusNode());
      _jumpBottom();
    });
  }

  void disposeJump() async {
    new Future.delayed(Duration(milliseconds: 500), () {
      Provider.of<WebSocketProvide>(context, listen: false).closeWebSocket();
    });
  }

  void getMsgList() async {
    new Future.delayed(Duration(milliseconds: 2000), () {
      setState(() {
        // msgList = storyList;
        msgList = Provider.of<WebSocketProvide>(context, listen: false)
            .historyMessageqqq;
        print(JsonEncoder().convert(msgList));
        print(444443);
        _jumpBottom();
      });
      // LogUtil.d(msgList);
      // print(44444484444);
    });
  }

  @override
  void initState() {
    emojiList = emoji.split(',');
    // print(emojiList);
    assList = [];
    if(widget.type == "nearToOne"){
      dataTable = 3;
    }else {
      dataTable = null;
    }
    
    
    print(JsonEncoder().convert(emojiList));
    print(widget.id);
    print(66669999);
    // DartNotificationCenter.registerChannel(channel: 'socket_event');
    // DartNotificationCenter.post(
    //   channel: "socket_event",
    //   options: 'with options!!',
    // );

    FastNotification.addListener("chat_room", (historyMessageqqq) {
      if (mounted) {
        setState(() {
          msgList = historyMessageqqq;
          print(JsonEncoder().convert(msgList));
          print(4444499);
        });
        _jumpBottom();
      }
    });
    FastNotification.addListener("chat_room_chat", (historyMessageqqq) {
      if (mounted) {
        setState(() {
          msgList = historyMessageqqq;
          print(JsonEncoder().convert(msgList));
          print(444449911111111);
        });
        _jumpBottom();
      }
    });
    FastNotification.addListener("set_user", (setUserList) {
      if (mounted) {
        new Future.delayed(Duration(milliseconds: 1000), () {
          // setState(() {
          //   userList = setUserList;
          // });
        });
      }
    });

    FastNotification.addListener("initSocket", (initThisSocket) {
      if (mounted) {
        isTrim = true;
        setWebSocket();
        _jumpBottom();
        FocusScope.of(context).requestFocus(FocusNode());
        toasts("聊天室已重连！");
      }
    });

    print("开启123");
    super.initState();
    _scrollController = new ScrollController();

    setWebSocket();
    // getStringEvent(widget.id);

    // initJump();
  }

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
  }

  void getStringEvent(roomId) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    List<dynamic> storyList = [];
    List<dynamic> storyListUserOnline = [];
    if (prefs.getStringList(roomId) != null) {
      List<String> hisString = prefs.getStringList(roomId);
      storyList = hisString.map((item) => jsonDecode(item)).toList();

      // new Future.delayed(Duration(milliseconds: 1000),(){
      //   setState(() {
      //     msgList = storyList;
      //     userList = storyListUserOnline;
      //     print(JsonEncoder().convert(msgList));
      //     print(444447);
      //     _jumpBottom();
      //   });
      //   // LogUtil.d(msgList);
      //   // print(44444484444);
      // });

    } else {
      prefs.setStringList(roomId, []);
    }

    // if (flustars.SpUtil.getString(roomId + "userOnline") != null &&
    //     flustars.SpUtil.getString(roomId + "userOnline") != "") {
    //   // if(prefs.getString(roomId+"userOnline")!=null){
    //   // String hisStringUserOnline = prefs.getString(roomId+"userOnline");
    //   // flustars.SpUtil.putString(roomId+"userOnline", res.token);
    //   String hisStringUserOnline =
    //       flustars.SpUtil.getString(roomId + "userOnline");
    //   for (var value in JsonDecoder().convert(hisStringUserOnline)) {
    //     print(value);
    //     storyListUserOnline.add(value);
    //   }
    //   ;
    //   // storyListUserOnline = JsonDecoder().convert(hisStringUserOnline);
    //   // storyListUserOnline = hisStringUserOnline.map((item)=>jsonDecode(item)).toList();

    // } else {
    //   //  prefs.setString(roomId+"userOnline",'');
    // }

    // print(JsonEncoder().convert(storyList));
    // print(JsonEncoder().convert(storyListUserOnline));

    new Future.delayed(Duration(milliseconds: 1000), () {
      setState(() {
        if (storyList.length > 0) {
          msgList = storyList;
          // _onRefresh();
        }
        if (storyListUserOnline.length > 0) {
          userList = storyListUserOnline;
        }

        print(JsonEncoder().convert(msgList));
        print(444447);
        _jumpBottom();
      });
      // LogUtil.d(msgList);
      // print(44444484444);
    });
  }

  // @override
  // void didChangeDependencies() {
  //   // Provider.of<WebSocketProvide>(context).closeWebSocket();
  //   Provider.of<WebSocketProvide>(context,listen: false).closeWebSocket();
  //   super.didChangeDependencies();
  // }

  FocusNode blankNode = FocusNode();

  ///选择图片
  void selectPicker() {
    showDialog(
        context: context,
        builder: (BuildContext context) {
          return SimpleDialog(
              title: Text("选择方式"),
              children: ["拍照", '从手机相册选择'].map((String value) {
                print("$value");
                return SimpleDialogOption(
                  child: Text(
                    "${value}",
                    style: TextStyle(fontSize: 16, fontWeight: FontWeight.w500),
                  ),
                  onPressed: () {
                    _getImage(value == '拍照' ? 1 : 0);
                    Navigator.of(context).pop();
                  },
                );
              }).toList());
        });
  }

  List<String>imagesList = [];
  List<String>imagesListLast = [];

  void _getImage(int key) async {
    try {
      var _imageFile = await ImagePicker.pickImage(
          source: key == 1 ? ImageSource.camera : ImageSource.gallery,
          maxWidth: 800,
          imageQuality: 95);
      print(_imageFile);
      print(3333);
      if (_imageFile != null) {
        // images.add(_imageFile);
        upLoadFileOnce(_imageFile.path);
        // setState(() {});
      }
    } catch (e) {
      toasts("没有权限，无法打开相册！");
    }
  }

  

  upLoadFileOnce(path) {
    showLoading(context, "正在发送...");
    NewApiService().upload(path, onSuccess: (res) {
      // imagesUrl.add(res.path);
      dismissLoading(context);
      String imagesUrl;
      imagesUrl = (res.pathUrl);
      Provider.of<WebSocketProvide>(context, listen: false)
          .sendMessage(context, imagesUrl, widget.id,2,dataTable,widget.toUserId);
    }, onError: (code, msg) {
      dismissLoading(context);
      toasts(msg);
    });
  }

  @override
  Widget build(BuildContext context) {
    double width = MediaQuery.of(context).size.width;
    double height = MediaQuery.of(context).size.height;
    // print(JsonEncoder().convert(msgList));
    imagesList = [];
    msgListBack = [];
    msgList.forEach((element) {
      msgListBack.insert(0, element);
    });
    print(JsonEncoder().convert(msgListBack));
    print("/**/*/**///---------------------");
    if(msgList.length > 0){
      msgList.forEach((element) {
        if(element["type"]==2){
                              imagesList.add(element["msg"]);
                            }
      });
    }
    // print(1234567980);
    
    return ChangeNotifierProvider<WebSocketProvide>(
      create: (_) => provider,
      child: Scaffold(
        appBar: MyAppBar(
          centerTitle: "聊天室",
          // onPressed:(){
          //   NavigatorUtils.push(context, FriendsRouter.friendsList);
          // }
          isFun: true,
          fun: () {
            // Provider.of<WebSocketProvide>(context,listen: false).closeWebSocket();
            // NavigatorUtils.push(context, FriendsRouter.friendsList);
            Navigator.popUntil(context, ModalRoute.withName('/home'));
            // NavigatorUtils.push(context, FriendsRouter.friendsList, clearStack: true);
            // NavigatorUtils.push(context, Routers.home, clearStack: true);
          },
        ),
        body: GestureDetector(
          onTap: () {
            // 点击空白页面关闭键盘
            FocusScope.of(context).requestFocus(blankNode);
          },
          child: Stack(
            children: <Widget>[
              GestureDetector(
                onTap: (){
                  setState(() {
                    showEmoji = false;
                  });
                },
                child: Container(
                padding: widget.type == "someToOne"
                    ? EdgeInsets.only(top: ScreenUtil().setWidth(10))
                    : EdgeInsets.only(top: ScreenUtil().setWidth(10)),
                // color: Colors.red,
                color: ThemeUtils.getTabsBg(context),
                child: Column(
                  // crossAxisAlignment: CrossAxisAlignment.end,
                  // mainAxisAlignment: MainAxisAlignment.end,
                  children: <Widget>[
                    !hasMore?Container(
                      padding: EdgeInsets.only(bottom:5),
                      child: Text(
                                "无更多历史记录~",
                                style: TextStyle(
                                    color: Color(0xff999999),
                                    fontSize: ScreenUtil().setSp(14)),
                                textAlign: TextAlign.center,
                              ),
                    ):Container(child: null,),
                    Expanded(
                          child: ChatListView(
                          key: Key('chat_list'),
                          scrollController: _scrollController,
                          onRefresh:_loadMore,
                          pageSize: 10,
                          itemCount: msgList.length,
                          hasMore: hasMore,
                          itemBuilder: (_, index) {
                            int typeUser;
                            // print(msgList[index]["fromUser"]);
                            // print(msgList[index]["msg"]);
                            // print(jsonDecode(msgList[index])["fromUser"]);
                            // print(1234567890);
                            if (msgList[index]["fromUser"] ==
                                flustars.SpUtil.getString(Constant.userId)) {
                              typeUser = 1;
                            } else {
                              typeUser = 0;
                            }

                            // if(msgList[index]["type"]==2){
                            //   imagesList.add(msgList[index]["msg"]);
                            //   print(msgList[index]["msg"]);
                            // }
                            // print("///////////////////////////////////////////");
                            // LogUtil.d(imagesList);
                            // print("///////////////////////////////////////////");
                            return ChatContentView(
                              contentIndex:index,
                              urlList:imagesList,
                                type: typeUser,
                                text: msgList[index]["msg"],
                                msgType: msgList[index]["type"],
                                avatar: msgList[index]["avatarUrl"],
                                username: msgList[index]["name"],
                                isNetwork: msgList[index]["avatarUrl"] != null
                                    ? true
                                    : false);
                          },
                        )
                    ),
                    // Consumer<WebSocketProvide>(builder: (context, child, val) {
                    //   return 
                    //   Expanded(
                    //       child: ChatListView(
                    //       key: Key('chat_list'),
                    //       scrollController: _scrollController,
                    //       onRefresh:_loadMore,
                    //       pageSize: 10,
                    //       itemCount: msgList.length,
                    //       loadMore: _loadMore,
                    //       hasMore: hasMore,
                    //       itemBuilder: (_, index) {
                    //         int typeUser;
                    //         // print(msgList[index]["fromUser"]);
                    //         // print(msgList[index]["msg"]);
                    //         // print(jsonDecode(msgList[index])["fromUser"]);
                    //         // print(1234567890);
                    //         if (msgList[index]["fromUser"] ==
                    //             flustars.SpUtil.getString(Constant.userId)) {
                    //           typeUser = 1;
                    //         } else {
                    //           typeUser = 0;
                    //         }

                    //         // if(msgList[index]["type"]==2){
                    //         //   imagesList.add(msgList[index]["msg"]);
                    //         //   print(msgList[index]["msg"]);
                    //         // }
                    //         print("///////////////////////////////////////////");
                    //         LogUtil.d(imagesList);
                    //         print("///////////////////////////////////////////");
                    //         return ChatContentView(
                    //           contentIndex:index,
                    //           urlList:imagesList,
                    //             type: typeUser,
                    //             text: msgList[index]["msg"],
                    //             msgType: msgList[index]["type"],
                    //             avatar: msgList[index]["avatarUrl"],
                    //             username: msgList[index]["name"],
                    //             isNetwork: msgList[index]["avatarUrl"] != null
                    //                 ? true
                    //                 : false);
                    //       },
                    //     )
                    //     // ListView.builder(
                    //     //   controller: _scrollController,
                    //     //   physics: ClampingScrollPhysics(),
                    //     //   itemBuilder: (BuildContext context, int index) {
                    //     //     int typeUser;
                    //     //     // print(msgList[index]["fromUser"]);
                    //     //     // print(msgList[index]["msg"]);
                    //     //     // print(jsonDecode(msgList[index])["fromUser"]);
                    //     //     // print(1234567890);
                    //     //     if (msgList[index]["fromUser"] ==
                    //     //         flustars.SpUtil.getString(Constant.userId)) {
                    //     //       typeUser = 1;
                    //     //     } else {
                    //     //       typeUser = 0;
                    //     //     }
                            
                    //     //     // if(msgList[index]["type"]==2){
                    //     //     //   imagesList.add(msgList[index]["msg"]);
                    //     //     //   print(msgList[index]["msg"]);
                    //     //     // }
                    //     //     // print("///////////////////////////////////////////");
                    //     //     // LogUtil.d(imagesList);
                    //     //     // print("///////////////////////////////////////////");
                    //     //     return ChatContentView(
                    //     //       contentIndex:index,
                    //     //       urlList:imagesList,
                    //     //         type: typeUser,
                    //     //         text: msgList[index]["msg"],
                    //     //         msgType: msgList[index]["type"],
                    //     //         avatar: msgList[index]["avatarUrl"],
                    //     //         username: msgList[index]["name"],
                    //     //         isNetwork: msgList[index]["avatarUrl"] != null
                    //     //             ? true
                    //     //             : false);
                    //     //     // return ChatContentView(type:typeUser,text:msgList[index]["msg"],avatar:imgFontUrl+msgList[index]["avatarUrl"],username:msgList[index]["name"],isNetwork:msgList[index]["avatarUrl"]!=null?true:false);
                    //     //   },
                    //     //   itemCount: msgList.length,
                    //     //   // itemCount:type == 1 ? list.length : messageList.length ,
                    //     // )
                    //   );
                    // }),
                    showEmoji?Container(
                      padding: EdgeInsets.only(left:ScreenUtil().setWidth(6),top:ScreenUtil().setWidth(10),bottom:ScreenUtil().setWidth(10),right: ScreenUtil().setWidth(6)),
                      color: Colors.white,
                      height: ScreenUtil().setWidth(200),
                      child: GridView.extent(
                        //横轴的最大长度
                        maxCrossAxisExtent: 35,
                        //内边距
                        padding: EdgeInsets.all(4.0),
                        //垂直方向的间距
                        mainAxisSpacing: 4.0,
                        //水平方向的间距
                        crossAxisSpacing: 4.0,
                        children: emojiList.map((element) { 
                          return GestureDetector(
                            onTap: (){
                              controller.text += element;
                            },
                            child: Text(
                                element,
                                style: TextStyle(
                                    color: Color(0xff000000),
                                    fontSize: ScreenUtil().setSp(22)),
                                textAlign: TextAlign.center,
                              ),
                          );
                        }).toList(),
                      )
                    ):Container(child: null,),
                    Container(
                      padding: EdgeInsets.only(
                          top: ScreenUtil().setHeight(2.0),
                          bottom: ScreenUtil().setHeight(2.0),
                          left: 0,
                          right: 0),
                      color: ThemeUtils.getDialogTextFieldColor(context),
                      child: Row(
                        children: <Widget>[
                          Container(
                            width: ScreenUtil().setWidth(30.0),
                            margin: EdgeInsets.only(
                                right: ScreenUtil().setWidth(10.0)),
                            child: IconButton(
                                icon: Icon(ICons.ADD),
                                onPressed: () {
                                  selectPicker();
                                  FocusScope.of(context).requestFocus(FocusNode());
                                }),
                          ),
                          Expanded(
                              child: Container(
                            // padding: EdgeInsets.only(top: ScreenUtil().setHeight(8.0), bottom: ScreenUtil().setHeight(8.0)),
                            height: ScreenUtil().setHeight(30.0),
                            decoration: BoxDecoration(
                                borderRadius:
                                    BorderRadius.all(Radius.circular(5.0)),
                                color: Colors.white),
                            child: TextField(
                              controller: controller,
                              // decoration: InputDecoration.collapsed(hintText: null),
                              decoration: InputDecoration(
                                border: InputBorder.none,
                              ),
                              maxLines: 1,
                              autocorrect: true,
                              autofocus: false,
                              textAlign: TextAlign.start,
                              style: TextStyle(color: Colors.black),
                              cursorColor: Colors.green,
                              onChanged: (text) {
                                setState(() {
                                  hasText = text.length > 0 ? true : false;
                                });
                                // print('change=================== $text');
                              },
                              // onSubmitted:_handleSubmitted,
                              enabled: true, //bu禁用
                            ),
                          )),
                          Container(
                            width: ScreenUtil().setWidth(30.0),
                            child: IconButton(
                                icon: Icon(ICons.FACES), //发送按钮图标
                                onPressed: () {
                                  print('打开表情面板');
                                  setState(() {
                                    showEmoji = !showEmoji;
                                  });
                                }),
                          ),
                          Container(
                            width: ScreenUtil().setWidth(30.0),
                            margin: EdgeInsets.only(
                                right: ScreenUtil().setWidth(10.0)),
                            child: IconButton(
                                //发送按钮或者+按钮
                                icon: Icon(Icons.send),
                                onPressed: () {
                                  if (controller.text == null || controller.text == '') {
                                    toasts("请输入内容");
                                  } else {
                                    _handleSubmitted(context, controller.text);
                                  }
                                }),
                          )
                        ],
                      ),
                    )
                  ],
                ),
              ),
              ),
              
              // widget.type == "someToOne"
              //     ? Positioned(
              //         top: 0,
              //         left: 0,
              //         child: userList != null && userList != []
              //             ? Container(
              //                 width: width,
              //                 height: ScreenUtil().setWidth(100),
              //                 padding: EdgeInsets.only(
              //                     top: ScreenUtil().setWidth(15),
              //                     bottom: ScreenUtil().setWidth(10)),
              //                 color: Colors.white,
              //                 child: ListView(
              //                     scrollDirection: Axis.horizontal,
              //                     children: userList.asMap().keys.map((i) {
              //                       if (i == 0) {
              //                         return userList[i]["flag"]
              //                             ? Container(
              //                                 padding: EdgeInsets.only(
              //                                     right:
              //                                         ScreenUtil().setWidth(15),
              //                                     left: ScreenUtil()
              //                                         .setWidth(15)),
              //                                 child: Column(children: <Widget>[
              //                                   ClipRRect(
              //                                       borderRadius:
              //                                           BorderRadius.all(
              //                                               Radius.circular(
              //                                                   22)),
              //                                       child: LoadNetworkImage(
              //                                         userList[i]["avatarUrl"],
              //                                         width: ScreenUtil()
              //                                             .setWidth(43),
              //                                         height: ScreenUtil()
              //                                             .setWidth(43),
              //                                       )
              //                                       // userList[i]["avatarUrl"]!=null&&userList[i]["avatarUrl"]!=null ?
              //                                       //   FadeInImage.assetNetwork(
              //                                       //     placeholder: 'assets/images/temporary/avator2.png',
              //                                       //     //预览图
              //                                       //     fit: BoxFit.fitWidth,
              //                                       //     image: imgFontUrl+userList[i]["avatarUrl"],
              //                                       //     width: ScreenUtil().setWidth(43),
              //                                       //               height:ScreenUtil().setWidth(43),
              //                                       //   )
              //                                       //   :Image.asset(
              //                                       //     'assets/images/temporary/avator2.png',
              //                                       //     fit: BoxFit.cover,
              //                                       //     width: ScreenUtil().setWidth(43),
              //                                       //               height:ScreenUtil().setWidth(43),
              //                                       //   ),
              //                                       ),
              //                                   Container(
              //                                       height: 5, child: null),
              //                                   Text(
              //                                     userList[i]["name"],
              //                                     style: TextStyle(
              //                                         color: Color(0xff000000),
              //                                         fontSize: ScreenUtil()
              //                                             .setSp(14)),
              //                                     textAlign: TextAlign.start,
              //                                   ),
              //                                 ]),
              //                               )
              //                             : Container(child: null);
              //                       } else {
              //                         return userList[i]["flag"]
              //                             ? Container(
              //                                 padding: EdgeInsets.only(
              //                                     right: ScreenUtil()
              //                                         .setWidth(15)),
              //                                 child: Column(children: <Widget>[
              //                                   ClipRRect(
              //                                     borderRadius:
              //                                         BorderRadius.all(
              //                                             Radius.circular(22)),
              //                                     child: LoadNetworkImage(
              //                                       userList[i]["avatarUrl"],
              //                                       width: ScreenUtil()
              //                                           .setWidth(43),
              //                                       height: ScreenUtil()
              //                                           .setWidth(43),
              //                                     ),
              //                                     // userList[i]["avatarUrl"]!=null&&userList[i]["avatarUrl"]!=null ?
              //                                     //   FadeInImage.assetNetwork(
              //                                     //     placeholder: 'assets/images/temporary/avator2.png',
              //                                     //     //预览图
              //                                     //     fit: BoxFit.fitWidth,
              //                                     //     image: imgFontUrl+userList[i]["avatarUrl"],
              //                                     //     width: ScreenUtil().setWidth(43),
              //                                     //               height:ScreenUtil().setWidth(43),
              //                                     //   )
              //                                     //   :Image.asset(
              //                                     //     'assets/images/temporary/avator2.png',
              //                                     //     fit: BoxFit.cover,
              //                                     //     width: ScreenUtil().setWidth(43),
              //                                     //               height:ScreenUtil().setWidth(43),
              //                                     //   ),
              //                                   ),
              //                                   Container(
              //                                       height: 5, child: null),
              //                                   Text(
              //                                     userList[i]["name"],
              //                                     style: TextStyle(
              //                                         color: Color(0xff000000),
              //                                         fontSize: ScreenUtil()
              //                                             .setSp(14)),
              //                                     textAlign: TextAlign.start,
              //                                   ),
              //                                 ]),
              //                               )
              //                             : Container(child: null);
              //                       }
              //                     }).toList()))
              //             : Container(
              //                 child: null,
              //               ))
              //     : Container(child: null)
            ],
          ),
        ),
      ),
    );
  }

  // @override
  // void dispose() {
  //   Provider.of<WebSocketProvide>(context,listen: false).closeWebSocket();
  //   // disposeJump();
  //   super.dispose();

  // }

  Future _onRefresh() async {
    _page = 1;
     await NewApiService().getMsgHistoryList(
       {
         "pageNum":_page,
         "pageSize":pageSize,
         "sessionid":widget.id,
      },
      
          onSuccess: (res) {
        print("初始化数据");
        print(JsonEncoder().convert(res));
        List<dynamic> ass = [];
        if(res != null && res.length > 0){
          ass.addAll(res);
        }
        
        ass.addAll(msgList);
        setState(() {
          
          msgList = ass;
          _jumpBottom();
        });
        print("初始化数据");
      }, onError: (code, msg) {
        toasts(msg);
      });
  }
  Future _loadMore() async {
    
    if(hasMore){
      _page++;
    await NewApiService().getMsgHistoryList(
       {
         "pageNum":_page,
         "pageSize":10,
        //  "pageSize":pageSize,
         "sessionid":widget.id,
      },
      
          onSuccess: (res) {
            print(JsonEncoder().convert(res));
            print(123456111);
        if (res != null && res.length > 0) {
          print("初始化数据");
        print(JsonEncoder().convert(res));
        List<dynamic> ass = [];
        ass.addAll(res);
        if(assList.length == 0){
          ass.addAll(msgList);
        }else {
          ass.addAll(assList);
        }
        assList = ass;
        setState(() {
          msgList = ass;
          hasMore = true;
          // _jumpBottom();
        });
        print("初始化数据");
        }else {
          setState(() {
            hasMore = false;
          });
        }
      }, onError: (code, msg) {
        toasts(msg);
      });
    }else {
      print("无更多历史记录！");
    }
    
    print("加载更多了");
  }
}
