# flutter-app **Repository Path**: ty-like/flutter-app ## Basic Information - **Project Name**: flutter-app - **Description**: flutter - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-19 - **Last Updated**: 2026-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # flutter-app 跨平台应用客户端(Android / iOS)— 工程化模块化底座。 ## 技术栈 | 依赖 | 用途 | 说明 | |------|------|------| | go_router | 路由 + 登录守卫 | 官方维护 | | provider | 状态管理 | 官方推荐,轻量 | | http | 网络请求 | 官方维护 | | shared_preferences | 本地存储 | 官方维护 | | cached_network_image | 网络图片缓存(头像) | 头部社区库 | | flutter_svg | SVG 图标/插画 | — | | bot_toast | 全局轻提示(core/utils/toast.dart) | — | | shimmer | 骨架屏(core/widgets/skeleton.dart) | — | | permission_handler | 摄像头/麦克风权限(core/utils/permissions.dart) | 视频通话前置 | | cupertino_icons | 图标 | — | > 原则:依赖克制,全部官方/第一方;重依赖(如 agora_rtc_engine)按需再引。 ## 🚀 首次运行(三步) ```bash # 1. 补全平台目录(android/ios 等,首次拉代码后执行一次即可,不会覆盖 lib/) flutter create . --org com.tylike --project-name flutter_app --platforms=android,ios # 2. 拉依赖 flutter pub get # 3. 跑起来(连真机或模拟器) flutter run ``` 内置测试账号:`admin / 123456`(需先启动 [flutter-server](../flutter-server))。 > **真机调试注意**:把 `lib/core/config/app_config.dart` 里的 > `10.0.2.2` 改成你电脑的局域网 IP(如 `http://192.168.1.100:5000`)。 > **权限声明**(`flutter create .` 之后需手动加,视频通话要用): > - Android `android/app/src/main/AndroidManifest.xml`: > `` > `` > `` > - iOS `ios/Runner/Info.plist`:`NSCameraUsageDescription`、`NSMicrophoneUsageDescription` ## 📁 目录结构 ``` lib/ ├── main.dart 入口:初始化服务链 ├── app.dart MaterialApp 壳 ├── core/ ★ 核心公共层(不含业务) │ ├── config/app_config 多环境配置(dev/prod,类似 Vben .env) │ ├── theme/ 主题(亮/暗、色彩规范) │ ├── network/ HTTP 封装、统一响应、异常体系 │ ├── router/ 路由表 + 登录守卫 │ ├── storage/ 本地 KV 存储封装 │ ├── constants/ storage key / api path 常量 │ ├── utils/ 校验、格式化工具 │ └── widgets/ 通用组件(三态视图、防抖按钮…) ├── layouts/ ★ 布局模块 │ ├── default/ 主布局(底部导航) │ └── auth/ 登录布局(无导航) ├── models/ 全局共享模型(user…) └── features/ ★ 业务模块(一模块一目录,互不依赖) ├── user/ 登录/用户(data + logic + ui) ├── home/ 首页(服务端联通 Demo) ├── mine/ 我的 └── video_call/ 视频通话骨架(Agora 接入点已预留) ``` ## ➕ 如何新增一个业务模块(例如 chat) 1. `lib/features/chat/` 下建三件套: ``` chat/ ├── data/chat_api.dart # 接口定义(走 core/network) ├── logic/chat_store.dart # ChangeNotifier 状态 └── ui/chat_page.dart # 页面 + 私有组件 ``` 2. `core/constants/api_paths.dart` 加接口路径常量 3. `core/router/app_router.dart`:`RouteNames` 加名称 + routes 挂页面 4. 需要底部 Tab?`layouts/default/widgets/bottom_nav_bar.dart` 的 `_items` 加一项 ## 🔁 前后端约定 统一响应格式(与 flutter-server 的 `Common/ApiResponse.cs` 对齐): ```json { "code": 0, "message": "ok", "data": { } } ``` - `code == 0` 成功;非 0 业务失败(自动抛 `ApiException.business`) - HTTP 401 → 自动抛 `ApiException.unauthorized`(将来可在这里全局触发登出) - 认证:JWT Bearer,token 由 `HttpClient` 自动注入 ## 🧪 测试 ```bash flutter test ```