8ee69598bf
Co-Authored-By: Claude Code <noreply@anthropic.com>
30 lines
1.2 KiB
Dart
30 lines
1.2 KiB
Dart
/// 环境入口配置(P3 计划 Task 2)。
|
||
///
|
||
/// 值经 `--dart-define=KEY=value` 覆盖;缺省指向 Android 模拟器宿主回环
|
||
/// (10.0.2.2 = 模拟器内看到的宿主机 localhost,见计划「模拟器网络回环」
|
||
/// 偏差登记)。`String.fromEnvironment` 为编译期常量,不可运行时切换。
|
||
class ApiConfig {
|
||
const ApiConfig._();
|
||
|
||
/// cn-api 基地址(不含 `/v1` 前缀——契约 servers.url 为 `/v1`,
|
||
/// 由 [ApiClient] 统一拼接到各端点路径)。
|
||
static const String baseUrl = String.fromEnvironment(
|
||
'API_BASE',
|
||
defaultValue: 'http://10.0.2.2:8080',
|
||
);
|
||
|
||
/// viewer 观众端基地址(Task 4 分享二维码链接用)。
|
||
static const String viewerBase = String.fromEnvironment(
|
||
'VIEWER_BASE',
|
||
defaultValue: 'http://10.0.2.2:5175',
|
||
);
|
||
|
||
/// 观众端相册链接:`{VIEWER_BASE}/a/{token}`(Task 4 qr 分享用,
|
||
/// viewer 路由约定)。[lang] 附加 `?lang=`(viewer i18n 分享链接语言
|
||
/// 参数,UI-03 页面 19:接收端据此呈现,仅认 zh-CN/en)。
|
||
static String viewerAlbumUrl(String publicToken, {String? lang}) {
|
||
final base = '$viewerBase/a/$publicToken';
|
||
return lang == null ? base : '$base?lang=$lang';
|
||
}
|
||
}
|