Flutter高仿微信-第30篇-单聊-文本

news2024/12/25 9:12:30

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<String, Object> result = HashMap<String, Object>();
  eventBus.emit(BaseEvent(BaseEvent.TYPE_NEW_MESSAGE, result: result));
}

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统中使用汇编初始化外设方法

大家好&#xff0c;我是ST。 今天主要和大家聊一聊&#xff0c;如何使用汇编语言来实现芯片外设的初始化功能。 ​ 目录 第一步&#xff1a;硬件原理分析 第二&#xff1a;实验程序编写方法 第三&#xff1a;汇编代码具体实现 第四&#xff1a;编译与下载 第五&#xff…

临床医生公派赴美国密歇根大学医院访学交流

在保证出国时间的前提下&#xff0c;专业匹配程度越高越好&#xff0c;这是P医生提出的要求。我们的申请团队全力以赴&#xff0c;提前3个月完成了任务&#xff0c;令客户非常满意。 P医生背景&#xff1a; 申请类型&#xff1a;公派访问学者 工作背景&#xff1a;三甲医院 …

【王道计算机网络笔记】物理层-传输介质 物理层设备

文章目录传输介质导向性传输介质双绞线同轴电缆光纤非导向性传输介质物理层设备中继器集线器&#xff08;多口中继器&#xff09;传输介质 传输介质也称传输媒体/传输媒介&#xff0c;它就是数据传输系统中发送设备和接受设备之间的物理通路 信道是发送设备和接受设备之间的逻…

【JUC源码专题】Striped64 核心源码分析(JDK8)

文章目录核心变量缓存行填充longAccumulate 方法方法概览cells 数组已初始化重新计算随机数扩容前置条件cells 数组未初始化cas 更新 BaseStriped64 的核心是通过分治思想将对 base 的竞争分散到不同的 cell 单元中。核心变量 // 通过分治的思想将对 base 的竞争分散到不同的 c…

多线程加强

1, 线程状态 1.1 概述 一个线程从创建,运行,到最后销毁的这个过程称之为线程的生命周期,在这个生命周期过程中线程可能会经历如下几个状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态。 1.2 测试 public class ThreadTest {static String des;//main线程/主线…

【javaEE】网络原理(传输层Part3)

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录前言TCP相关机制7. 延迟应答8. 捎带应答TCP补充【面向字节流】【TCP中的异常处理】另&#xff08;含面试题&#xff09;TCP小结THINK前言 一个人最大的痛苦来源于对自己无能的愤怒 Hi&#xff0c;这里还是不想秃头…

数据结构与算法基础-学习-01-线性表之顺序表-初始化、销毁、清理、获取长度、判断为空、获取元素等实现

一、测试环境 名称值cpu12th Gen Intel Core™ i7-12700H操作系统CentOS Linux release 7.9.2009 (Core)内存3G逻辑核数2gcc 版本4.8.5 20150623 二、个人理解 数据结构分为逻辑结构和物理结构&#xff08;也称为存储结构&#xff09;。 1、逻辑结构 逻辑结构又可以分为以下…

python学习笔记(09)---(正则表达式)

第七章 内置容器&#xff08;五&#xff09; 8.正则表达式 &#xff08;1&#xff09;正则表达式用于描述字符串的复杂文本规则的代码&#xff0c;一般用于查询匹配 &#xff08;2&#xff09;常见元字符 <1> 作用&#xff1a;表示特殊含义&#xff0c;一般为范围性…

MySQL数据库期末考试试题及参考答案(09)

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 一、 填空题 MySQL提供的____命令可以将数据库导出成SQL脚本&#xff0c;以实现数据的备份。mysqldump命令备份多个数据库时&#xff0c;数据库名称之间用____隔开。MySQL中…

Java-1123

Jedis 介绍&#xff1a;Jedis是一款java操作redis数据库的工具&#xff08;类似JDBC&#xff09; 使用步骤&#xff1a; 下载jedis的jar包使用 快速入门 // 1.获取连接 Jedis jedis new Jedis("localhost",6379); // 2.操作 jedis.set("name","z…

c++ 深度拷贝和浅拷贝

一、简介 由于20年转行之后一直用的是halcon 和c# &#xff0c;C就此搁浅&#xff0c;最近开始搞pcl慢慢的又重拾起来&#xff0c;对于深拷贝和浅拷贝我知道是什么原因造成的&#xff0c;也知道如何解决&#xff0c;但是突然被人问得时候又有点蒙蔽&#xff0c;因此做一个简单…

MCE 天然化合物相关库更新

随着现代化合物分离和鉴定技术的不断提高&#xff0c;以及人们对自然界生物多样性的持续研究&#xff0c;越来越多的天然产物被用于新药研究开发。据统计&#xff0c;截至 2013 年&#xff0c;有 547 个天然产物及天然产物衍生物被 FDA 批准上市&#xff0c;占所有 FDA 批准上市…

高通骁龙处理器天梯排行榜2022 骁龙处理器发布时间排行

骁龙处理器天梯图2022最新10月更新榜单 1、高通骁龙8 Gen1 2、高通骁龙8 Gen1 3、高通骁龙888 Plus 4、高通骁龙888 我用的手机就是活动时7.5折抢购的 点击开抢 http://shouji.adiannao.cn/7 1、工艺&#xff1a;搭载最新一代5nm制作工艺&#xff0c;为用户带来最强的处理器性能…

[附源码]Python计算机毕业设计大学生兼职系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

STM32中的独立看门狗和窗口看门狗

独立看门狗和窗口看门狗有什么区别&#xff1f;一、前言二、独立看门狗三、窗口看门狗四、结语一、前言 在早期的MCU中是没有看门狗这种东西的&#xff0c;所以产品就很容易出现死机&#xff0c;跑飞的情况。为了避免这种情况的出现&#xff0c;后期的MCU都集成了看门狗的功能…

CI/CD Jenkins容器化安装部署

环境准备 docker安装 jenkins镜像安装 CI/CD CI:持续集成 CD:连续交付 环境准备 下载前推荐先看下Jenkins硬件和软件要求部分 Jenkins官方文档 Jenkins下载 虚拟机 docker 对配置的要求 CentOS安装可跳转 VMware安装CentOS CentOS 7.8 // 查看CentOS版本命令 cat /etc…

牛客网语法篇练习循环控制(一)

1.2023年就要来到了&#xff0c;KiKi要对他的n位好朋友说n遍”Happy new year!Good luck!”的祝福语。 n int(input()) for i in range(n):print(Happy new year!Good luck!) 2.任意输入一个正整数N&#xff0c;统计1~N之间奇数的个数和偶数的个数&#xff0c;并输出。 num …

【网页设计】基于HTML在线商城购物项目设计与实现-----电脑商城6页带视频 带报告3000字

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业 HTML&#xff1a;结构 CSS&#…

java开发者工具IDEA自定义设置主题/字体/字号大小

IDEA自定义设置主题 第一步&#xff1a;点击工具栏上的“File”选项。 第二步&#xff1a;选择“Settings…”选项。 第三步&#xff1a;点击“Appearance & Behavior > Appearance”选项。 第四步&#xff1a;点击右侧"Theme"下拉框&#xff0c;选择自己喜…

动态爬虫管理平台构建与实现_kaic

目 录 第1章 绪论 1.1背景与意义 1.2主题网络爬虫的国内外研究现状 1.2.1主题辨别算法及平台构建 1.2.2主题爬虫系统 1.3本文的研究内容 第二章 主题网络爬虫的体系结构 2.1组成模块 2.1.1基本组成 2.1.2基本流程 2.2主题页面的分布特性 2.2.1 Hub/Authority特性 2.2.2 Linkag…