Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。

详情请查看

效果图:

详情请参考Flutter高仿微信-第44篇-群聊, 这里只是群聊的表情实现代码。

实现代码:

//表情控件
Widget getEmojiWidget(){return SizedBox(height: 200.0,width: 1000.0,child: EmojiPicker(onEmojiSelected: (Category category, Emoji emoji) {_onEmojiSelected(emoji);},onBackspacePressed: _onBackspacePressed,config: const Config(columns: 7,emojiSizeMax: 25.0,verticalSpacing: 0,horizontalSpacing: 0,initCategory: Category.RECENT,bgColor: Color(0xFFF2F2F2),indicatorColor: Color(0xff65DAC5),iconColor: Colors.orange,iconColorSelected: Color(0xff65DAC5),progressIndicatorColor: Color(0xff65DAC5),backspaceColor: Color(0xff65DAC5),showRecentsTab: true,recentsLimit: 28,categoryIcons: CategoryIcons(),buttonMode: ButtonMode.MATERIAL)),);
}
emoticonClick(String name){//LogUtils.d("选择表情:" + name);controller.text = name;
}///选中表情
_onEmojiSelected(Emoji emoji) {controller..text += emoji.emoji..selection = TextSelection.fromPosition(TextPosition(offset: controller.text.length));hideAddIcon = true;hideSend = false;setState(() {});
}///表情删除按钮
_onBackspacePressed() {controller..text = controller.text.characters.skipLast(1).toString()..selection = TextSelection.fromPosition(TextPosition(offset: controller.text.length));if (controller.text.isNotEmpty) {setState(() {});}
}
//朋友的文本
Widget toTextWidget(){return Column(crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[Container(padding: EdgeInsets.symmetric(vertical: 8.0, horizontal: 10.0),decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(5.0),),color: Color(0xFFEDEDED)),child: Text(widget.chatBean.content??"",textAlign: TextAlign.left,style: TextStyle(color: Colors.black, fontSize: 20.0),),)],);
}
//我的文本
Widget meTextWidget(){return Column(// Column被Expanded包裹起来,使其内部文本可自动换行crossAxisAlignment: CrossAxisAlignment.end,children: <Widget>[Container(padding: EdgeInsets.symmetric(vertical: 8.0, horizontal: 10.0),decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(5.0),),color: Color(0xFF9EEA6A),),child: Text(widget.chatBean.content??"",textAlign: TextAlign.left,style: TextStyle(color: Colors.black, fontSize: 20.0),),)],);
}
//定义发送文本事件的处理函数
void _handleSubmitted(String text) async {if (text.length > 0) {bool isNetwork = await CommonNetwork.isNetwork();if(!isNetwork) {CommonUtils.showNetworkError(context);return;}int contentType = CommonUtils.CHAT_CONTENT_TYPE_TEXT;String addTime = WnDateUtils.getCurrentTime();String messageId = UUID.getUUID();ChatSendBean chatSendBean = ChatSendBean();chatSendBean.contentType = contentType;chatSendBean.content = text;chatSendBean.addTime = addTime;chatSendBean.second = 0;chatSendBean.messageId = messageId;chatSendBean.fromAccount = SpUtils.getAccount();String message = jsonEncode(chatSendBean);controller.clear(); //清空输入框GroupChatBean groupChatBean = GroupChatBean(account: widget.account, groupId: widget.toGroupId, content: text, contentType: contentType, addTime: addTime, messageId: messageId, localMediaUrl: "", serverMediaUrl: "", second: 0);//状态变更,向聊天记录中插入新记录setState(() {hideAddIcon = false;hideSend = true;items.add(groupChatBean);});await GroupChatRepository.getInstance().insertGroupChat(groupChatBean);_sendMessage(message);jumpToBottom(100);}
}
_sendMessage(var message){int id = DateTime.now().millisecondsSinceEpoch;String toJid = "${widget.toGroupId}@conference.wangning";XmppManager.getInstance().sendGroupMessageWithType(toJid, message, "${id}", id);Map<String, Object> result = HashMap<String, Object>();eventBus.emit(BaseEvent(BaseEvent.TYPE_NEW_MESSAGE, result: result));
}

Flutter高仿微信-第46篇-群聊-表情相关推荐

  1. Flutter高仿微信-第47篇-群聊-语音

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情 ...

  2. Flutter高仿微信-第48篇-群聊-图片

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情 ...

  3. Flutter高仿微信-第31篇-单聊-表情

    Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...

  4. Flutter高仿微信-第54篇-群聊-邀请好友

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 Flutter ...

  5. Flutter高仿微信-第51篇-群聊-修改群名

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 实现 ...

  6. Flutter高仿微信-第52篇-群聊-清空聊天记录

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 实现 ...

  7. Flutter高仿微信-第55篇-群聊-合成群头像

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 /*** 处理 ...

  8. Flutter高仿微信-第36篇-单聊-语音通话

    Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 目前市 ...

  9. Flutter高仿微信-第32篇-单聊-语音

    Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...

最新文章

  1. oracle+nvlif函数,Oracle中的NVL()、NVL2()、NULLIF()、Coalesce()函数
  2. ARM AMBA 外围设备 的datasheet
  3. 巴巴运动网学习笔记(16-20)
  4. DOCKER存储驱动之DEVICE MAPPER简介
  5. vml的简易画板_2
  6. left join 和join区别_sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇
  7. 澄海哪里学机器人编程_少年学机器人编程
  8. 易方达、鹏华、京东数科基金投顾访谈
  9. 【Registration of 3D Point Clouds with Low Overlap】
  10. windows动态库目录
  11. 俄罗斯地名 中文 英文 俄文
  12. Camtasia2022电脑屏幕录像使用录屏教程
  13. (附源码)ssm 客户信息管理系统 毕业设计 281609
  14. ubuntu 测试硬盘读写速度
  15. 一个串口连接另外两个串口的设计
  16. SSM框架整合(Spring+SpringMVC+MyBatis)附源码
  17. 在微信小程序中,如果自动获取用户所在的省市地区?
  18. java调用百度翻译_Java调用百度API实现翻译-Go语言中文社区
  19. 高校宿舍管理系统详细需求分析说明书
  20. Oracle学习—图书管理系统_存储过程

热门文章

  1. win8计算机桌面字体,win8.1桌面字体颜色_Win8更换桌面主题(壁纸、窗口颜色)的操作步骤_win8个性化颜色...
  2. 《Head First 设计模式》:代理模式
  3. 求下列函数的拉普拉斯变换_试求下列函数的拉氏变换.pdf
  4. office 部署安装
  5. XMind思维导图教程:如何做思维导图?
  6. 流量背后的生意经,“达人营销”能否带来捷径?
  7. python 可视化处理时间刻度
  8. 一文详解:Quick BI、帆软Fine BI等主流BI软件,各有哪些特点
  9. 关于ar9331 gpio调试遇到的问题
  10. 计算机毕业设计ssm面向智慧课堂的教学过程管理系统evi14系统+程序+源码+lw+远程部署