一个基于 Flutter + 智谱 AI(GLM-4V-Flash)的穿搭识别应用。拍照或选图后,AI 自动分析衣物的类别、颜色、风格等信息。
lib/
├── main.dart # 入口 + 首页导航 + 设置页
├── core/
│ └── theme/
│ └── app_theme.dart # 全局主题/颜色定义
├── data/
│ └── services/
│ └── zhipu_service.dart # 智谱 AI 网络请求封装
└── features/
└── recognize/
└── screens/
└── recognize_screen.dart # 识别功能页面(UI + 业务逻辑)
程序入口 :main() 读取本地存储的 API Key,启动应用
AidaApp :根 Widget,配置 MaterialApp(路由、主题)
HomeScreen :底部四 Tab 导航:识别 / 衣橱 / 搭配台 / 设置
SettingsScreen :设置页,支持查看和修改智谱 AI Key
_PlaceholderScreen :衣橱、搭配台的占位页(功能待开发)
recognize_screen.dart — 核心功能页
用户点击图片区域或按钮 → 调用相机/相册选图
选图完成后自动调用 ZhipuService.recognizeClothing()
展示 AI 识别结果:类别、颜色、风格、描述、标签
zhipu_service.dart — AI 服务层
把图片编码为 Base64
用 dio 发 HTTP POST 到智谱 API
Prompt 要求模型返回 JSON,解析后封装成 ClothingRecognitionResult 数据类
集中定义颜色常量(米白暖色系)
配置 ThemeData:按钮、卡片、AppBar 等全局样式
概念
本项目中的例子
说明
StatelessWidget
AppTheme, _PlaceholderScreen
没有状态,build 一次不变
StatefulWidget
HomeScreen, RecognizeScreen
有可变状态,调用 setState() 刷新 UI
Widget build()
每个类的 build 方法
描述界面长什么样,Flutter 负责渲染
setState()
_isLoading = true 后调
通知 Flutter 重新 build,更新界面
async/await
_pickImage, _recognize
异步操作(网络、文件 IO)不阻塞 UI
Scaffold
每个页面
标准页面骨架:AppBar + body + bottomBar
pubspec.yaml
依赖声明
相当于 Android 的 build.gradle
包
用途
dio
HTTP 网络请求
image_picker
调用相机/相册选图
shared_preferences
本地 Key-Value 存储(保存 API Key)
flutter_riverpod
状态管理(已引入,暂未使用)
path_provider
获取本地文件路径
uuid
生成唯一 ID
已实现 :识别页(拍照/选图 → AI 分析 → 展示结果)+ 设置页
待开发 :衣橱管理、搭配台(目前均为占位页)