几个月前,我决定为自己创建一个日程表。 我想要一些非常具体的东西:每小时的日程表视图、计时器来比较计划时间与实际时间、以及一种查看过去日子的方法,而不是将所有内容丢弃在已完成任务列表中。 我选择了Flutter,因为我想在我的Linux机器和Android手机上使用相同的应用。 一开始,我想规划UI会是最复杂的部分。 结果,我完全错误了 :) 时间线需要工作,特别是拖拽、调整大小、重复活动和任务变化的行为。 但真正的挑战开始了,当我想要应用在离线时仍然同步时。 我最终使用了 Drift + SQLite 进行本地存储,因此UI读取和写入设备而不是等待网络。 然后,我使用 Supabase 构建了一个同步层。 每个设备都保持自己的本地数据库,变化在本地队列中排队,当可用时通过PostgreSQL进行同步。 我还添加了一个Cloudflare Worker来处理设置用户自己的Supabase项目、应用模式和验证配置。 那整个部分比我预期的要复杂得多。 在一个设备上得到某事是另一回事。 确保在两台设备离线时仍然行为正常是另一回事。 与此同时,原始日历日益膨胀。 它现在具有每日/周末评论、历史概览、年长一致热图、未预定想法的收件箱和实验室功能来跟踪目标。 我还获得了Android、Linux、Windows和macOS的构建。 Windows和macOS仍然有某些限制,我还没有测试Mac构建在物理Mac硬件上。 这是我的第一个Flutter项目。 我还在开发过程中使用了AI编码代理,指导工作、测试流程和管理变化。 我仍在从这个过程中学习。 应用程序免费,并将代码放在GitHub上,如果有人想要查看我如何接近它。 GitHub: https://github.com/Karthikshabari/PersonalPlanner 发行版本: https://github.com/Karthikshabari/PersonalPlanner/releases/tag/v1.1 我很好奇其他独立开发者如何处理离线优先的同步。 你会再次构建自己的同步层,还是从一开始就使用更具见解的东西? 我对这个项目中的一部分真的让我重新考虑我的原始计划感兴趣。
我的第一个Flutter项目变成了一个4平台的计划工具,同步功能是最难的部分
评论 (0)