flutter+go构建的即时通讯app,ChatCraft

news2024/11/24 8:40:28

前言

Hi👋all.好久不见,已经两个多月没有发文章了,这段时间一直在反思过去的一年,有好有坏。对博客文章这块我对自己是不满意的,文章的质量参差不齐,有时候在没有好的题材时,我会选择写一些泛泛之谈的文章,只是为了增加一些活跃度。这导致我产出了很多质量不高的文章,而且在一些水文的评论区,我看到了很多"水文"、“毫无营养”、"看完发现自己浪费了5分钟"等评论。对这些评论,我将他们作为对我的批评,反思自己的行为和成果是非常重要的。于是我在2024年年初发了一个沸点:

决定花更多的时间和精力在每篇文章上,确保它们能够提供有深度和有意义的信息。在反思的过程中,我查看了我所有的文章,然后看到了我“三年前”写的两篇文章:

三年前的我,做了个即时通讯的demo,但当时想做的其实一款完整即时通讯App,结果一直到现在都没有开始!那么我想,是时候去实现这个三年前的想法了!

Chat Craft

演示视频

非常感谢我的设计朋友帮我制作的演示视频:@kellygenius

jvideo

客户端地址:https://github.com/taxze6/flutter-chat-craft

服务端地址:https://github.com/taxze6/Go-Chat-Craft

Android Apk体验地址(使用蒲公英内测,如果无法下载则表明达到了500次/天的限额):https://www.pgyer.com/XxRr8v

测试账号1:taxze,密码:123456789

测试账号2:taxze2,密码:123456789

也可通过邮箱验证码注册账号,建议使用qq邮箱或gmail邮箱。

Chat-Craft目前已经实现了即时通讯的基本功能,支持Android和IOS。快来下载并体验吧!

📖 概述

社交应用程序在世界各地都很流行,例如 Facebook、Line、Whatsapp。如果您渴望打造一款独具个性的社交平台,Chat-Craft项目将是您不可或缺的理想之选。Chat-Craft是一款跨平台移动应用,采用了Golang作为后端服务端技术,以及Flutter作为前端客户端技术。该应用旨在提供高效、稳定且跨平台的用户体验,将现代的移动应用开发技术和高性能的后端服务端技术相结合。

在Chat-Craft项目中,作者精心雕琢了客户端UI,灵感汲取于各大即时通讯应用及最新的应用设计规范。这独特的设计巧妙地融合了各方优点,呈现出一种令人愉悦的视觉体验。这样的UI不仅为项目赋予了独特的美感,同时也为学习者创造了更为有趣的学习环境。

🎨使用技术

🔨部分页面截图

🖥️运行项目

首先,请按照下列步骤操作:

1.克隆 GitHub 存储库: 首先使用以下命令克隆存储库。

//拉取客户端项目
git clone https://github.com/taxze6/flutter-chat-craft.git

//拉取服务端项目
gie clone https://github.com/taxze6/Go-Chat-Craft

2.检查本地开发环境: 确保您拥有 3.16.9 或更高版本的 Flutter 环境和1.19.3或更高版本的 golang。

flutter doctor
[!] Flutter (Channel stable, 3.16.9, on Microsoft Windows [版本 10.0.19045.3930], locale zh-CN)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[√] Chrome - develop for the web
[√] Visual Studio - develop Windows apps (Visual Studio Professional 2022 17.6.4)
[√] Android Studio (version 4.0)
[√] Android Studio (version 2021.2)
[√] IntelliJ IDEA Ultimate Edition (version 2020.2)
[√] Connected device (3 available)

go version
go version go1.19.3 windows/386

3.加载项目依赖: 分别加载flutter客户端的依赖和golang服务端的依赖。

//加载flutter项目的依赖
flutter pub get
//查看flutter项目的依赖关系
flutter pub deps

//加载golang项目的依赖
go mod download
//查看golang当前项目的所有依赖
go list -m all

4.进行项目配置: 配置数据库、中间件、ip、运行端口。

//先配置golang项目中的config-debug.yaml
//配置项目运行端口、数据库和中间件对应的ip、端口和账号密码
port: '8889'
host: '127.0.0.1'
mysql:
  host: '127.0.0.1'
  port: '3306'
  name: 'chatcraft'
  user: 'root'
  password: 'root@123321'
redis:
  host: '127.0.0.1'
  port: '6379'
rabbitmq:
  host: "127.0.0.1"
  port: "5672"
  user: "guest"
  password: "guest"

//再配置flutter项目flutter_chat_craft\lib\common下的ip_config.dart
class IpConfig {
  //Replace with server address
  static const ip = "127.0.0.1:8889";
}

5.对本地的数据库执行SQL: 对mysql执行Go-Chat-Craft下的chatcraft.sql

6.运行客户端与服务端项目

🎉未来

一个好的开源项目,一定是长时间的迭代出来的,Chat Craft作为一个”婴儿“还有着很长的成长道路。然而,正是这种挑战使得它有机会成为一个优秀的开源项目。在接下来的旅程中,Chat Craft将不断迭代和改进,让我们一起见证它的成长吧!非常欢迎大家参与这款开源项目,有任何改进项目的想法都可以通过github的issuse告诉我~

🎈最后

这几个月来做开源项目,我发现,开源项目就好像自己的孩子,凝结着你的付出,陪伴着你每个日日夜夜,一次一次的推翻重写,一次一次的否定之前的构思,只想让它更好一些,这些都是工作所不能比拟的~

关于我

Hello,我是Taxze,如果您觉得文章对您有价值,希望您能给我的文章点个❤️,有问题需要联系我的话:我在这里 。如果您觉得文章还差了那么点东西,也请通过关注督促我写出更好的文章~万一哪天我进步了呢?😝

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

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

相关文章

9.SELinux

目录 1. 概述 1.1. 概念 1.2. 作用: 1.3. SELinux与传统的权限区别 2. SELinux工作原理 2.1. 名词解释 2.1.1. 主体(Subject) 2.1.2. 目标(Object) 2.1.3. 策略(Policy) 2.1.4. 安全上…

河南省考后天网上确认,请提前准备证件照哦

✔报名时间:2024年1月18号一1月24号 ✔报名确认和缴费:2024年1月 31号一2月4号 ✔准考证打印:2024年3月12号一3月17号 ✔笔试时间:2024年3月16日-2024年3月17日。 ✔面试时间:面试时间拟安排在2024年5月中旬 报名网址&…

ChatGPT学python: 用json文件传参

目录 json语法最简陋版python解析语法小结 json语法最简陋版 param.json [{"Table_name": "table1","Event_name_colum": 4,"update_colum": 9},{"Table_name": "table2","Event_name_colum": 3,&quo…

快速掌握,制作可发送上课通知小程序的秘籍

对于教育培训机构来说,及时通知学生上课时间、地点等重要信息是至关重要的。而现在,通过小程序,我们可以更加便捷地实现这一目标。下面将为你介绍如何制作一个可发送上课通知的小程序。 首先,通过百度搜索“乔拓云”,并…

NFS 网络文件系统

1. NFS简介 NFS(Network File System 网络文件系统),是一种用于在计算机网络上共享文件的协议。它允许一个计算机系统通过网络将其文件和存储设备共享给其他计算机系统,使得这些系统可以像访问本地文件一样访问网络共享的文件。 N…

excel中提取一串数字中的某几个数字

excel中提取一串数字中的某几个数字 提取一串数字中的某几个数字,使用公式函数截取数据 LEFT函数:用于截取单元格左边的字符,例如“LEFT(A1,5)”会返回A1单元格中的前5个字符。RIGHT函数:用于截取单元格右边的字符,例…

如何設置動態住宅IP代理管理工具SwitchySharp插件

動態住宅IP代理管理工具SwitchySharp擴展程式專為Chrome設計,可讓用戶更輕鬆地管理代理設置,並以其簡單性和靈活性著稱。本文我們將討論SwitchySharp插件的功能、優點、如何設置。 Proxy SwitchySharp插件具體有什麼用? 此工具是專為Chrome設…

汽车软件开发模式的5个特点

汽车软件开发属于较为复杂的系统工程,经常让来自不同知识背景的工程师在观点交锋时出现分歧。在解决复杂性和对齐讨论基准时,可以通过勾勒出讨论对象最关键的几个特征来树立典型概念。本文旨在通过5个典型特点的抽取,来勾勒出汽车软件开发模式…

Flask 入门2:路由

1. 前言 在上一节中&#xff0c;我们使用到了静态路由&#xff0c;即一个路由规则对应一个 URL。而在实际应用中&#xff0c;更多使用的则是动态路由&#xff0c;它的 URL是可变的。 2. 定义一个很常见的路由地址 app.route(/user/<username>) def user(username):ret…

STM32 IIC电量计LTC2944

1 描述 LTC2944 可在便携式产品应用中测量电池充电状态、电池电压、电池电流及其自身温度。宽输入电压范围允许使用高达 60V 的多节电池。精密库仑反向积分电流通过电池正极端子与负载或充电器之间的检测电阻器。 电压、电流和温度由内部 14 位无延迟 ΔΣ™ ADC 测量。测量结…

GBASE南大通用数据库对与例程相关联的对象的权限

数据库服务器检查是否存在任何被引用的对象&#xff0c;并验证调用该例程的用户是否拥有访问被引用的对象的必要权限。 由例程引用的对象可包括&#xff1a; • 表和列 • 序列对象 • 用户定义的数据类型 • 由该例程执行的其他例程 当例程运行时&#xff0c;定义有效的权…

第六篇:express路由拆分(模块化)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4d8; 引言&#xff1a; &#x…

elasticsearch的基本使用

使用postman进行测试 如下图所示&#xff1a; 需要进行验证&#xff0c;请选择Authorization中的basic auth,填写账号以及密码。 添加ik中文分词 安装 IK 分词器插件&#xff1a; 下载 IK 分词器插件&#xff0c;可以从 GitHub 上的 elasticsearch-analysis-ik 页面下载最好…

学习使用vite+vue3的所遇问题总结

组件中使用<script>标签忘记加 setup 这会导致Navbar 没有暴露出来&#xff0c;导致使用不了&#xff0c;出现以下报错 这是因为&#xff0c;如果不用setup&#xff0c;就得使用 export default …… setup 是后者的语法糖 在Vue.js中&#xff0c;你可以通过route对象…

Python学习--一个逻辑推理的猜数字的游戏

修订Pico Fermi Bagels猜数字游戏代码&#xff0c;仅用于学习Python。 运行界面如下&#xff1a; 修订的代码如下&#xff1a; # // # 提升逻辑思维猜数字小游戏 # BY&#xff1a;Al Sweigart alinventwithpython.com # 翻译&#xff1a;诚外无物 # 说明&#xff1a;一个逻辑…

微信小程序之下拉刷新事件、上拉触底事件和案例

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

Android systemui 编译

目录 简介&#xff1a; 一、步骤 二、下载源码 三、环境配置 四、确定好需要编译版本 五、编译SystemUI 步骤1&#xff1a;进入源代码目录 步骤2&#xff1a;初始化编译环境 步骤3&#xff1a;选择目标设备 步骤4&#xff1a;编译SystemUI 步骤5&#xff1a;查找生成…

kubeadm安装K8S_v1.28.x容器使用docker

一&#xff0e;环境部署 1.1 基础环境配置&#xff08;只有1台服务器&#xff0c;作为masrer&#xff0c;也作为node使用&#xff09; [rootecs-cf5e ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootecs-cf5e ~]# uname -a Linux ecs-cf5e 3.10.0-11…

全志R128基础组件开发——显示与屏幕驱动①

RTOS 提供了一套完整的屏幕驱动&#xff0c;支持 RGB, i8080, SPI, DBI 格式的屏幕。 &#xff08;1&#xff09;RGB 接口 RGB接口在全志平台又称HV接口&#xff08;Horizontal同步和Vertical同步&#xff09;。有些LCD屏支持高级的功能比如 gamma&#xff0c;像素格式的设置…

【哈希】哈希表|除留取余法|哈希冲突(拉链法interv)|一致性哈希|虚拟节点

哈希 hash 散列函数&#xff08;将非常大范围的输入&#xff0c;通过一定的函数&#xff0c;可以转换到小规模的输出&#xff09; 什么是哈希&#xff1f; 广义上是一种思想&#xff0c;不是一个特定的东西&#xff0c;只要算法设计中使用到了哈希思想&#xff0c;就可以叫…