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篇-群聊-语音相关推荐

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

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

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

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

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

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

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

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

  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高仿微信-第54篇-群聊-邀请好友

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

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

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

最新文章

  1. archlinux升级内核后virtualbox不能启动虚拟机
  2. activiti 5.15.1 动态手动通过java编码方式,实现创建用户任务,动态指定个人,用户组,角色,指定监听的实现...
  3. *【CodeForces - 280C】Game on Tree(期望模型,期望的线性性)
  4. 字符串固定长度 易语言_易语言字符串操作源码
  5. 训练日志 2019.1.23
  6. 详解工作流框架Activiti的服务架构和组件
  7. php 读取数据库信息,php读取数据库信息的几种方法
  8. 深度优先遍历(DFS)- Letter CasePermutation - Combinations
  9. Python开发Day07(学生选课)
  10. IBM PowerAI编程大赛Q2场来袭!探秘金融语料大数据识别
  11. STM32选型与命名规则
  12. Mac OX 下方便的微信语音,图片,视频等导出方式
  13. 渗透之——触发Easy File Sharing Web Server 7.2 HEAD缓冲区溢出的Python脚本
  14. 个人网站如何申请支付接口?(教程)
  15. mac如何显示隐藏文件
  16. Kerberos鉴权后Spark程序连接Redis数据库,解决No Reachable node in cluster错误
  17. 伪随机二进制序列(PRBS)
  18. scrapy爬虫实战教程
  19. 如何让AutoHotkey在大部分游戏中好用
  20. jack编译突然无法编译的问题

热门文章

  1. PIC 1508 TIM1的定时器门控的理解
  2. TIA博途中触摸屏仿真时画面字体变大,超出范围的处理方法
  3. 史上最全量化交易资源整理(转)
  4. Win10系统怎么卸载软件
  5. typechoSEO站点收录插件推荐
  6. 计算机大纲中的应用,计算机的应用论文提纲模板范本 计算机的应用论文大纲怎么写...
  7. Oracle 之利用BBED修改数据块SCN----没有备份数据文件的数据恢复
  8. Windows 打开本地组组策略编辑器
  9. zbursh2021尝新,安装包
  10. 淘宝商家开通淘金币可以提高商品转化率吗?