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

详情请查看

效果图:

详情请参考 Flutter高仿微信-第29篇-单聊 , 这里只是提取表情实现的部分代码。

实现代码:

//Emoji表情控件
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)),);
}
///选中表情
_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(() {});}
}

Emoji跟显示文本一样:

//我的文本
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),),)],);
}
//朋友的文本
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),),)],);
}

发送消息:

//定义发送表情事件的处理函数
void _handleSubmitted(String text) async {if (text.length > 0) {bool isNetwork = await CommonNetwork.isNetwork();if(!isNetwork) {CommonUtils.showNetworkError(context);return;}bool deleteContacts = await isDeleteContacts(widget.account, widget.toChatId);if(deleteContacts){WnBaseDialog.showAddFriendsDialog(context, widget.toChatId);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;String message = jsonEncode(chatSendBean);_sendMessage(message);controller.clear(); //清空输入框ChatBean chatBean = ChatBean(fromAccount: widget.account, toAccount: widget.toChatId, content: text,contentType: contentType, addTime: addTime, isRead: 1, messageId: messageId);LogUtils.d("插入数据:${chatBean.toJson()}");//状态变更,向聊天记录中插入新记录setState(() {hideAddIcon = false;hideSend = true;items.add(chatBean);});await ChatRepository.getInstance().insertChat(chatBean);jumpToBottom(100);}
}
//发送消息
_sendMessage(var message){int id = DateTime.now().millisecondsSinceEpoch;String account = SpUtils.getString(CommonUtils.LOGIN_ACCOUNT);String toJid = "${widget.toChatId}@wangning";XmppManager.getInstance().sendMessageWithType(toJid, message, "$account", id);Map<String, Object> result = HashMap<String, Object>();eventBus.emit(BaseEvent(BaseEvent.TYPE_NEW_MESSAGE, result: result));
}

Flutter高仿微信-第31篇-单聊-表情相关推荐

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

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

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

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

  3. Flutter高仿微信-第46篇-群聊-表情

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

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

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

  5. Kotlin高仿微信-第11篇-单聊-语音

     Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册.登录.主页.单聊(文本.表情.语音.图片.小视频.视频通话.语音通话.红包.转账).群聊.个人信息.朋友圈.支付服务.扫一扫.搜 ...

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

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

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

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

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

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

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

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

最新文章

  1. ubuntu14.04如何在线安装eclipse以及C/C++开发组件,搭建软件开发平台
  2. swift 跳转网页写法
  3. 冲动当机立断(2006-01-19 16:58:32)(新浪)
  4. 选择MPLS或SD-WAN用于组织网络部署的几大原因—Vecloud微云
  5. cisco firewall (ASA Series)
  6. 终于搞定T43上的Access Connection了!
  7. 【渝粤题库】国家开放大学2021春2724市场营销原理与实务题目
  8. 《那些年啊,那些事——一个程序员的奋斗史》——78
  9. dir结构体 linux_Linux下DIR,dirent,stat等结构体详解
  10. VMware运行Ubuntu 三种网络连接方式:bridge、NAT、Host-Only的区别
  11. 计算机关机的界面,修改计算机关机界面_生活与休闲
  12. GTRD:最全面的人和小鼠转录因子chip_seq数据库
  13. mysql 批量 插入或更新
  14. 计算机辅助设计技术领域的应用,计算机辅助设计技术在机械设计中的应用探讨...
  15. s一般怎么称呼自己的m_英文信的开头和结尾,怎么写才不会出错?
  16. postgresql中recovery.conf分析
  17. 【Spring Boot】构造、访问Restful Webservice与定时任务
  18. Intel 12代处理器主机 安装Ubuntu
  19. 堡垒机,ssh协议,telnet协议,b/s架构
  20. CCNA,CCNP,CCIE是什么?

热门文章

  1. 任务栏的输入法工具栏不见了
  2. 摩托罗拉 V360i的使用心得
  3. c语言程序设计项目化教程第二版130,C语言程序设计项目化教程pdf(附答案)电子版...
  4. 2021年,快速Deno上手指南
  5. 树莓派python智能家居英文参考文献_Home Assistant + 树莓派:强大的智能家居系统 · 设备接入篇...
  6. iOS模仿京东商城中的选择地区样式
  7. nRF52840芯片全面支持蓝牙 5.0
  8. 机器学习技法 之 梯度提升决策树(Gradient Boosted Decision Tree)
  9. Visual Studio 2015专业版安装激活图文教程,有注册码
  10. 计算机中人民币的符号怎么打,人民币符号怎么打?Word中人民币符号怎么打?...