Flutter高仿微信-第46篇-群聊-表情
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篇-群聊-表情相关推荐
- Flutter高仿微信-第47篇-群聊-语音
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情 ...
- Flutter高仿微信-第48篇-群聊-图片
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情 ...
- Flutter高仿微信-第31篇-单聊-表情
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...
- Flutter高仿微信-第54篇-群聊-邀请好友
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 Flutter ...
- Flutter高仿微信-第51篇-群聊-修改群名
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 实现 ...
- Flutter高仿微信-第52篇-群聊-清空聊天记录
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 实现 ...
- Flutter高仿微信-第55篇-群聊-合成群头像
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 /*** 处理 ...
- Flutter高仿微信-第36篇-单聊-语音通话
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 目前市 ...
- Flutter高仿微信-第32篇-单聊-语音
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...
最新文章
- oracle+nvlif函数,Oracle中的NVL()、NVL2()、NULLIF()、Coalesce()函数
- ARM AMBA 外围设备 的datasheet
- 巴巴运动网学习笔记(16-20)
- DOCKER存储驱动之DEVICE MAPPER简介
- vml的简易画板_2
- left join 和join区别_sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇
- 澄海哪里学机器人编程_少年学机器人编程
- 易方达、鹏华、京东数科基金投顾访谈
- 【Registration of 3D Point Clouds with Low Overlap】
- windows动态库目录
- 俄罗斯地名 中文 英文 俄文
- Camtasia2022电脑屏幕录像使用录屏教程
- (附源码)ssm 客户信息管理系统 毕业设计 281609
- ubuntu 测试硬盘读写速度
- 一个串口连接另外两个串口的设计
- SSM框架整合(Spring+SpringMVC+MyBatis)附源码
- 在微信小程序中,如果自动获取用户所在的省市地区?
- java调用百度翻译_Java调用百度API实现翻译-Go语言中文社区
- 高校宿舍管理系统详细需求分析说明书
- Oracle学习—图书管理系统_存储过程
热门文章
- win8计算机桌面字体,win8.1桌面字体颜色_Win8更换桌面主题(壁纸、窗口颜色)的操作步骤_win8个性化颜色...
- 《Head First 设计模式》:代理模式
- 求下列函数的拉普拉斯变换_试求下列函数的拉氏变换.pdf
- office 部署安装
- XMind思维导图教程:如何做思维导图?
- 流量背后的生意经,“达人营销”能否带来捷径?
- python 可视化处理时间刻度
- 一文详解:Quick BI、帆软Fine BI等主流BI软件,各有哪些特点
- 关于ar9331 gpio调试遇到的问题
- 计算机毕业设计ssm面向智慧课堂的教学过程管理系统evi14系统+程序+源码+lw+远程部署