Flutter高仿微信-第48篇-群聊-图片
创始人
2024-02-16 18:32:45
0

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

 详情请查看

效果图:

 详情请参考Flutter高仿微信-第44篇-群聊, 这里只是群聊的图片实现代码。

实现代码:

/*** 显示群图片* @serverImageUrl 服务器图片地址* @localImageUrl 本地图片地址*/
static Widget showGroupChatImage(String serverImageUrl,String localImageUrl, {double width = 50, double height = 50, double angle = 4, final onPressed}){String defaultImageUrl = "assets/images/base/base_error.png";Widget childWidget;//本地图片为空if(localImageUrl.isEmpty){//服务器地址为空if(serverImageUrl.isEmpty){//显示默认图片childWidget = _getDefaultAssetWidget(defaultImageUrl, width, height);} else {//显示网络图片serverImageUrl = CommonUtils.BASE_URL_UPLOAD + serverImageUrl;childWidget = _getCachedNetworkImage(serverImageUrl, defaultImageUrl, width, height);}} else {//本地图片不为空,判断是否存在File file = File(localImageUrl);bool isExist = file.existsSync();if(isExist){//如果本地文件存在,在本地显示childWidget = _getFileImageWidget(localImageUrl, width, height);} else {//网络现实图片,要加载服务器地址serverImageUrl = CommonUtils.BASE_URL_UPLOAD + serverImageUrl;childWidget = _getCachedNetworkImage(serverImageUrl, defaultImageUrl, width, height);}}return ClipRRect(borderRadius: BorderRadius.circular(angle),child: childWidget);
}

//刷新多媒体(图片、语音、小视频) (先刷新本地,然后小视频压缩完成再慢慢发送)
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_IMG){//状态变更,向聊天记录中插入新记录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_IMG){//图片serverChatBean = await UploadUtils.getInstance().uploadGroupChatImage(widget.account, widget.toGroupId, mediaURL, messageId, addTime);}chatSendBean.content = serverChatBean?.serverMediaUrl??"";GroupChatRepository.getInstance().updateGroupChatByMessageId(serverChatBean?.messageId??"", serverChatBean?.serverMediaUrl??"");message = jsonEncode(chatSendBean);_sendMessage(message);
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...