我如何使用 Gemini 构建了一个 15000 行以上的 Flutter 应用来‘Hack’我的大学考勤
发布: (2026年2月26日 GMT+8 02:55)
5 分钟阅读
原文: Dev.to
Source: Dev.to
请提供您希望翻译的具体文本内容(除代码块和 URL 之外),我将为您翻译成简体中文并保持原有的格式、Markdown 语法以及技术术语不变。谢谢!
我用 Google Gemini 构建的项目
作为一名在创业梦想与繁重课程之间平衡的 IT 本科生,缺课过多会导致灾难性的考试禁考。为了解决这个问题,我构建了 Attendance Tracker(代号 “The 80%”)。这是一款跨平台的 Flutter 应用,旨在通过离线优先存储和 AI 对大学出勤率进行数学优化。
该应用提供了 Danger Zone Planner,可以计算特定课程(Lectures、Labs、Tutorials)中缺勤的精确余量。学生可以模拟细粒度的情景,了解自己的出勤缓冲,确保永远不会意外低于必修的学术阈值。
Google Gemini 的作用
- 架构(Agentic AI) – 项目规模已超过 15,000 行代码。我在 Antigravity IDE 中使用 Gemini 3 Pro(High)模型作为自主编码代理,帮助设计离线优先的数据库(Hive)、管理状态(Provider),以及处理复杂的 UI 动画。
- 核心功能(API 集成) – 出勤应用中最大的摩擦点是手动数据录入。我集成了 Gemini 2.5 Flash API 来实现多模态课表提取。用户只需上传官方大学课表的 PDF 或图片,Gemini 就能智能解析非结构化数据,生成包含科目、时间和课程类型的整洁矩阵。
演示
您可以直接在浏览器中体验实时网络应用:
- 实时网络应用: Attendance Tracker Web
- 源代码: GitHub Repository(仅提供演示源代码以及最新的 APK 发布)
截图
我学到的
- 后台异步处理 – 通过 Gemini API 解析细节繁多的时间表 PDF 可能需要时间,因此我学会了将这些任务放在后台运行。这保持了 UI 的响应性,并允许用户在等待应用内“时间表已就绪”通知时继续浏览应用。
- 防御性工程 – AI 并不完美。我构建了一个强大的“草稿审查”步骤,让用户在将 AI 提取的时间表提交到 Firebase 数据库之前进行验证和编辑。
- 系统设计 – 实现基于 Hive 本地缓存的离线优先架构,并与 Firebase Firestore 无缝同步,使我学会了在不同网络条件下处理复杂的数据状态。
Google Gemini 反馈
优点
- gemini‑2.5‑flash 的多模态能力令人惊叹。它能够毫无瑕疵地处理凌乱、格式不佳的大学 PDF 和图像,将非结构化的视觉数据转化为干净、可用的数据集。
- 将 Gemini 3 Pro (High) 作为具备主动性的编码伙伴使用,感觉就像随时有一位资深工程师在旁,节省了数周的样板代码编写和 UI 调整时间。
缺点与不足
- 在一个 15,000 行的代码库中,上下文窗口的限制经常被挑战。偶尔,IDE 代理会失去对整体架构的把握,出现变量名幻觉或忘记远程文件之间的关联。
- 过度依赖 Gemini 2.5 Flash 进行文件解析会导致速率限制问题。为在高流量期间保持应用可用,我设计了一个 Multi‑API Key Support 系统,能够在不同用户提供的 Gemini 密钥之间轮换。
- 极度非标准的时间表布局有时会让模型困惑,使得手动草稿审查步骤变得必不可少。总体而言,Gemini 是一台强大的引擎,但在生产环境中需要严格的防护措施。


