You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
7 months ago | |
|---|---|---|
| .gradle/wrapper/dists/gradle-8.11.1-all/2qik7nd48slq1ooc2496ixf4i | 9 months ago | |
| .vercel | 1 year ago | |
| SpeexKit.xcframework | 1 year ago | |
| android | 7 months ago | |
| assets | 8 months ago | |
| doc | 7 months ago | |
| ios | 9 months ago | |
| lib | 7 months ago | |
| linux | 11 months ago | |
| local_plugins | 7 months ago | |
| macos | 1 year ago | |
| shaders | 1 year ago | |
| test | 7 months ago | |
| tools | 7 months ago | |
| web | 2 years ago | |
| windows | 11 months ago | |
| .gitignore | 7 months ago | |
| .mcp.json | 1 year ago | |
| .metadata | 1 year ago | |
| GoogleService-Info.plist | 1 year ago | |
| I18N_PLACEHOLDER_REMEDIATION.md | 7 months ago | |
| README.md | 11 months ago | |
| analysis_options.yaml | 2 years ago | |
| build_channels.sh | 7 months ago | |
| check_16kb.py | 9 months ago | |
| clean_spm.sh | 1 year ago | |
| devtools_options.yaml | 1 year ago | |
| firebase.json | 8 months ago | |
| fix_ja_jp.py | 7 months ago | |
| flutter_01.log | 1 year ago | |
| pubspec.yaml | 7 months ago | |
| test.json | 1 year ago | |
| test2.json | 1 year ago | |
README.md
Deep Voice
Flutter 应用程序,使用 GetX 状态管理和依赖注入。
项目目录结构
lib/
├─ core/
│ ├─ bindings/ # 全局或通用的 Bindings
│ ├─ constants/ # 常量、枚举、Key、全局配置等
│ ├─ errors/ # 异常/错误处理相关
│ ├─ themes/ # 主题(Color, TextStyle 等)
│ ├─ translations/ # 国际化、语言相关
│ ├─ utils/ # 通用工具类、Helper、扩展函数等
│ └─ widgets/ # 通用的无业务逻辑的Widgets
│
├─ data/
│ ├─ models/ # 数据模型(可与后端DTO对应)
│ ├─ repositories/ # 数据仓库(实际操作数据 CRUD, 远程或本地)
│ ├─ services/ # 第三方或原生平台封装,如网络请求、缓存、数据库等
│ └─ providers/ # 适配器层,比如把网络、数据库等转换为 Repository 可调用的接口
│
├─ modules/
│ ├─ login/
│ │ ├─ controllers/ # GetX Controller
│ │ ├─ views/ # 页面、Widget
│ │ ├─ bindings/ # 该模块的 Bindings
│ │ └─ ... # 其他文件
│ ├─ home/
│ │ ├─ controllers/
│ │ ├─ views/
│ │ ├─ bindings/
│ │ └─ ...
│ └─ ...
│
├─ routes/
│ ├─ app_pages.dart # 定义所有页面的 Route 列表
│ └─ app_routes.dart # 定义路由常量或路由字符串
│
└─ main.dart # 程序入口
本地调试内购(IAP)流程
不需要真实购买即可在本地跑通前端内购流程:
- 在项目根目录的环境变量文件(如
.env)里添加:
APP_IAP_MOCK=1
-
作用:在
PayService中启用“本地内购模拟”,调用processGooglePayment或processApplePayment会:- 立即触发“已发起内购(本地模拟)”;
- 短暂延时后触发“支付处理中…(本地模拟)”;
- 再触发“支付成功(本地模拟)”。
-
注意:该模式不依赖 Google Play / App Store 安装来源,也不会进行服务器收据校验,仅用于前端 UI 与状态机验证。
-
关闭模拟:将
APP_IAP_MOCK移除或设为0/false,恢复真实内购流程。