Flutter高仿微信-第30篇-单聊-文本
创始人
2024-02-10 19:37:37
0

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

详情请查看

效果图:

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

代码实现:

//定义发送文本事件的处理函数
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 result = HashMap();eventBus.emit(BaseEvent(BaseEvent.TYPE_NEW_MESSAGE, result: result));
}

//注册EventBus监听,接收到文本实时刷新

chatEvent = eventBus.on((chatBean) {if(mounted){setState(() {chatBean as ChatBean;items.add(chatBean);});}
});

//我的文本
Widget meTextWidget(){return Column(// Column被Expanded包裹起来,使其内部文本可自动换行crossAxisAlignment: CrossAxisAlignment.end,children: [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: [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),),)],);
}

相关内容

热门资讯

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