Files
nj/app/lib/config/app_config.dart
iven a34c9fd176 fix(app): 强制 HTTPS — Android 网络安全配置 + 生产默认 HTTPS
- Android: 添加 network_security_config.xml,默认禁止明文流量
- Android: 仅允许 localhost/127.0.0.1/10.0.2.2 明文(开发调试)
- Android: 更新 AndroidManifest 引用网络安全配置
- ApiClient: 默认 URL 改为 https://api.nuanji.app/api/v1
- AppConfig: fromEnvironment 默认值改为 HTTPS 生产地址
- AppConfig: dev 常量保留 localhost(仅用于本地开发)
- iOS: ATS 默认已强制 HTTPS,无需修改

审计 ID: 6b-C01
2026-06-03 10:13:20 +08:00

54 lines
1.7 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 应用环境配置 — 通过 --dart-define 注入
//
// 使用方式:
// flutter run # 开发模式localhost
// flutter run --dart-define=API_BASE_URL=https://api.nuanji.app/api/v1 # 生产模式
//
// 安全说明:
// - 生产环境强制 HTTPSAndroid network_security_config 禁止明文流量)
// - 开发模式使用 localhostAndroid 网络安全配置已允许 localhost 明文)
/// 应用环境配置 — 集中管理所有外部服务地址
class AppConfig {
/// API 基础 URL后端 Axum 服务地址)
final String apiBaseUrl;
/// SSE 推送服务 URL通常与 API 同一地址)
final String sseBaseUrl;
const AppConfig({
required this.apiBaseUrl,
required this.sseBaseUrl,
});
/// 从编译时环境变量构建配置
///
/// 使用 `--dart-define` 注入,未设置时使用生产 HTTPS 默认值。
/// 开发环境使用 [dev] 常量或通过 --dart-define 覆盖。
factory AppConfig.fromEnvironment({
String defaultApiBaseUrl = 'https://api.nuanji.app/api/v1',
String defaultSseBaseUrl = 'https://api.nuanji.app/api/v1',
}) {
// const String.fromEnvironment 在编译时求值
const apiBaseUrl = String.fromEnvironment(
'API_BASE_URL',
defaultValue: 'https://api.nuanji.app/api/v1',
);
const sseBaseUrl = String.fromEnvironment(
'SSE_BASE_URL',
defaultValue: 'https://api.nuanji.app/api/v1',
);
return AppConfig(
apiBaseUrl: apiBaseUrl,
sseBaseUrl: sseBaseUrl,
);
}
/// 开发环境默认配置localhost 明文 — 仅用于本地调试)
static const dev = AppConfig(
apiBaseUrl: 'http://localhost:3000/api/v1',
sseBaseUrl: 'http://localhost:3000/api/v1',
);
}