当前位置: 首页 > news >正文

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

前言

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 addressstatic const ip = "127.0.0.1:8889";
}

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

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

🎉未来

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

🎈最后

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

关于我

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

相关文章:

  • 软件工程知识梳理5-实现和测试
  • 浅谈MySQL3种日志
  • 如何通过 Nginx 反向代理提高网站安全性和性能?
  • 【常用工具】7-Zip 解/压缩软件——基本使用方法
  • Spark性能调优
  • 2024年航海制造工程与海洋工程国际会议(ICNMEME2024)
  • git仓库批量备份
  • LeetCode 54 螺旋矩阵
  • 扩展学习|商业智能和大数据分析的研究前景(比对分析)
  • 【Vue.js设计与实现】第一篇:框架设计概览-阅读笔记(持续更新)
  • 【Linux笔记】文件描述符与重定向
  • 《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第5章 决策树(代码python实践)
  • ingres nginx 反向代理常见配置(持续更新)
  • 盘点Python网页开发轻量级框架Flask知识
  • C++ 数论相关题目 博弈论 Nim游戏
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Angular2开发踩坑系列-生产环境编译
  • Centos6.8 使用rpm安装mysql5.7
  • C学习-枚举(九)
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Javascript 原型链
  • JSDuck 与 AngularJS 融合技巧
  • js中forEach回调同异步问题
  • JWT究竟是什么呢?
  • node学习系列之简单文件上传
  • 从零开始学习部署
  • 基于web的全景—— Pannellum小试
  • 学习笔记TF060:图像语音结合,看图说话
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • $.ajax,axios,fetch三种ajax请求的区别
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (四)linux文件内容查看
  • ******IT公司面试题汇总+优秀技术博客汇总
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET多线程执行函数
  • @angular/cli项目构建--Dynamic.Form
  • @ConfigurationProperties注解对数据的自动封装
  • @Valid和@NotNull字段校验使用
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ C++ ] STL_list 使用及其模拟实现
  • [ linux ] linux 命令英文全称及解释
  • [Angular] 笔记 21:@ViewChild
  • [c#基础]值类型和引用类型的Equals,==的区别
  • [Cocoa]iOS 开发者账户,联机调试,发布应用事宜
  • [hive] sql中distinct的用法和注意事项
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [IOI2018] werewolf 狼人
  • [Java、Android面试]_10_Java中==与equal()方法的区别?重写equal()方法?
  • [JavaWeb学习] Spring Ioc和DI概念思想
  • [LeetCode]—Add Binary 两个字符串二进制相加
  • [luogu4162 SCOI2009] 最长距离(最短路)