Flutter高仿微信-第47篇-群聊-语音
Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。
详情请查看
效果图:
详情请参考Flutter高仿微信-第44篇-群聊, 这里只是群聊的语音实现代码。
实现代码:
//我的语音 Widget meVoiceWidget(){return InkWell(onTap: () {widget.clickVoiceCallback(true);setState(() {widget.chatBean.isPlayVoice = true;});//点击语音AudioPlayer.getInstance().playLocal(widget.chatBean.voiceLocal??"", callback: (data){//录音回调setState(() {widget.chatBean.isPlayVoice = false;});});},child : Container(width: 120,height: 40,padding: EdgeInsets.symmetric(vertical: 4.0, horizontal: 2.0),decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(1.0),),color: Color(0xFF9EEA6A),),child: Row(crossAxisAlignment: CrossAxisAlignment.center,mainAxisAlignment: MainAxisAlignment.center,children: [Text("${widget.chatBean.second}''"),SizedBox(width: 4,),widget.chatBean.isPlayVoice?Image.asset("assets/chat/wn_chat_me_animator.gif", height: 24,):Image.asset("assets/chat/wn_chat_me_volume_3.png", height: 24,),],),)); }
//朋友的语音 Widget toVoiceWidget(){return InkWell(onTap: () {setState(() {widget.chatBean.isPlayVoice = true;});LogUtils.d("点击语音");AudioPlayer.getInstance().playLocal(widget.chatBean.voiceLocal??"", callback: (data){LogUtils.d("录音回调:${data}");setState(() {widget.chatBean.isPlayVoice = false;});});},child : Container(width: 120,height: 40,padding: EdgeInsets.symmetric(vertical: 4.0, horizontal: 2.0),decoration: BoxDecoration(borderRadius: BorderRadius.all(Radius.circular(5.0),),color: Color(0xFFEDEDED)),child: Row(crossAxisAlignment: CrossAxisAlignment.center,mainAxisAlignment: MainAxisAlignment.center,children: [widget.chatBean.isPlayVoice?Image.asset("assets/chat/wn_chat_other_animator.gif", height: 34,):Image.asset("assets/chat/wn_chat_other_volume_3.png", height: 34,),SizedBox(width: 4,),Text("${widget.chatBean.second}''"),],),)); }
//刷新多媒体(图片、语音、小视频) (先刷新本地,然后小视频压缩完成再慢慢发送) void _refreshMedia(int type, String mediaURL, String thumbnailFileName, {int mediaSecond=0, String messageId = "" }) async {bool isNetwork = await CommonNetwork.isNetwork();if(!isNetwork) {CommonUtils.showNetworkError(context);return;}String addTime = WnDateUtils.getCurrentTime();//先刷新本地聊天//ChatBean chatBean = ChatBean(fromAccount: widget.account, toAccount: widget.toGroupId,addTime:addTime,messageId: messageId,isRead: 1);GroupChatBean groupChatBean = GroupChatBean(account: widget.account, groupId: widget.toGroupId, addTime: addTime, messageId: messageId);LogUtils.d("群聊刷新:${type}");groupChatBean.contentType = type;groupChatBean.localMediaUrl = mediaURL;groupChatBean.content = thumbnailFileName;groupChatBean.second = mediaSecond;if(type == CommonUtils.CHAT_CONTENT_TYPE_VOICE){//状态变更,向聊天记录中插入新记录setState(() {items.add(groupChatBean);});await GroupChatRepository.getInstance().insertGroupChat(groupChatBean);} jumpToBottom(100); }
//发送多媒体(图片、语音、小视频) void _sendMedia(int type, String mediaURL, {int mediaSecond = 0, String messageId = ""}) async {bool isNetwork = await CommonNetwork.isNetwork();if(!isNetwork) {return;}//上传文件GroupChatBean? serverChatBean;String message = "";String addTime = WnDateUtils.getCurrentTime();ChatSendBean chatSendBean = ChatSendBean();chatSendBean.fromAccount = SpUtils.getAccount();chatSendBean.contentType = type;chatSendBean.messageId = messageId;chatSendBean.addTime = addTime;if(type == CommonUtils.CHAT_CONTENT_TYPE_VOICE){//语音serverChatBean = await UploadUtils.getInstance().uploadGroupChatVoice(widget.account, widget.toGroupId, mediaURL, messageId, addTime, mediaSecond);chatSendBean.second = mediaSecond;}chatSendBean.content = serverChatBean?.serverMediaUrl??"";GroupChatRepository.getInstance().updateGroupChatByMessageId(serverChatBean?.messageId??"", serverChatBean?.serverMediaUrl??"");message = jsonEncode(chatSendBean);_sendMessage(message); }
Flutter高仿微信-第47篇-群聊-语音相关推荐
- Flutter高仿微信-第46篇-群聊-表情
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...
- Flutter高仿微信-第48篇-群聊-图片
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情 ...
- Flutter高仿微信-第36篇-单聊-语音通话
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 目前市 ...
- Flutter高仿微信-第32篇-单聊-语音
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...
- 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高仿微信-第54篇-群聊-邀请好友
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 Flutter ...
- Flutter高仿微信-第31篇-单聊-表情
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 详情请 ...
最新文章
- archlinux升级内核后virtualbox不能启动虚拟机
- activiti 5.15.1 动态手动通过java编码方式,实现创建用户任务,动态指定个人,用户组,角色,指定监听的实现...
- *【CodeForces - 280C】Game on Tree(期望模型,期望的线性性)
- 字符串固定长度 易语言_易语言字符串操作源码
- 训练日志 2019.1.23
- 详解工作流框架Activiti的服务架构和组件
- php 读取数据库信息,php读取数据库信息的几种方法
- 深度优先遍历(DFS)- Letter CasePermutation - Combinations
- Python开发Day07(学生选课)
- IBM PowerAI编程大赛Q2场来袭!探秘金融语料大数据识别
- STM32选型与命名规则
- Mac OX 下方便的微信语音,图片,视频等导出方式
- 渗透之——触发Easy File Sharing Web Server 7.2 HEAD缓冲区溢出的Python脚本
- 个人网站如何申请支付接口?(教程)
- mac如何显示隐藏文件
- Kerberos鉴权后Spark程序连接Redis数据库,解决No Reachable node in cluster错误
- 伪随机二进制序列(PRBS)
- scrapy爬虫实战教程
- 如何让AutoHotkey在大部分游戏中好用
- jack编译突然无法编译的问题