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. Sql 删除不保留日志
  2. 教你如何搭建虚拟专用网连接 OPEN***
  3. .NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理...
  4. 《软件工程》individual project开发小记(一)
  5. c语言 为什么i%3cn 1,c语言中n+1个基础且容易出错的知识点
  6. 查找所选灯笼数(查找第二大)
  7. 02326操作系统课后答案
  8. js判断上传文件为图片格式、excel格式
  9. 各大文字转语音软件对比,哪个比较好呢?
  10. Python学习记录-实战一、车牌归属地
  11. 商业化广告--体系学习-- 11 -- 业务实战篇 --流量优化:如何兼顾广告收入和用户体验?
  12. Android实现个人中心设置界面
  13. 最新php开发学习资料网盘下载
  14. 屏幕录制视频时有杂音怎么办?
  15. python 操作redis集群
  16. Linux C/C++ 对于SIGBUS、SIGSEGV等崩溃异常捕获实现
  17. Vanish搭建CDN的节点集群
  18. SUSCTF 2022圆满落幕,SU战队夺冠
  19. display:none 和 visibility:hidden的区别
  20. 【Python 18】BMR计算器2.0(数值类型转换与while循环)

热门文章

  1. 前链财经带你明辨区块链技术的是与非!
  2. ​k8s常用命令 ​
  3. 经典坦克大战再现(一)
  4. 毕业设计(微信小程序)和毕业论文怎么写?
  5. 下载android版本公信宝,【公信宝App下载】公信宝手机版最版下载-优基地
  6. 慢跑是早上跑好,还是晚上跑好?对的时间跑,效果可能还翻倍
  7. bootstrap框架过时了吗_浅议bootstrap 框架优缺点
  8. codesys 之 SFC探索
  9. 统计词频 matlab,批量统计若干类词频总数方法
  10. 如何通俗易懂地理解去中心化身份?