You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发中无需手动切换Uri.http/Uri.https的解决方案

解决Flutter开发/上线环境Uri自动切换问题

不用手动逐个修改Uri创建方式,推荐以下几种高效方案:

方案1:封装网络工具类 + 环境配置

把Uri创建逻辑统一封装,通过环境配置自动切换http/https,后续只需修改配置文件,无需改动业务代码。

步骤:

    1. 定义环境配置类,区分开发与生产环境:
class EnvConfig {
  final String baseUrl;
  final bool useHttps;

  EnvConfig({required this.baseUrl, required this.useHttps});

  // 开发环境配置
  static EnvConfig dev = EnvConfig(
    baseUrl: "localhost:8080",
    useHttps: false,
  );

  // 生产环境配置
  static EnvConfig prod = EnvConfig(
    baseUrl: "your-production-domain.com",
    useHttps: true,
  );
}

// 上线时只需将此处切换为EnvConfig.prod
final currentEnv = EnvConfig.dev;
    1. 封装Uri创建方法:
Uri buildUri(String path) {
  return currentEnv.useHttps 
      ? Uri.https(currentEnv.baseUrl, path) 
      : Uri.http(currentEnv.baseUrl, path);
}
    1. 业务代码中直接调用:
// 开发/上线环境通用,无需修改
final loginUri = buildUri("api/v1/login");

方案2:通过命令行传递环境变量(适配CI/CD)

利用Flutter的--dart-define参数传递环境标识,代码中根据标识自动适配Uri方式,适合自动化打包场景。

步骤:

    1. 运行/打包时传递环境变量:
# 开发环境运行
flutter run --dart-define=ENV=dev

# 生产环境打包
flutter build apk --dart-define=ENV=prod
    1. 代码中读取环境变量并创建Uri:
String getEnv() {
  return const String.fromEnvironment("ENV", defaultValue: "dev");
}

Uri buildUri(String path) {
  final env = getEnv();
  return env == "prod"
      ? Uri.https("your-production-domain.com", path)
      : Uri.http("localhost:8080", path);
}

方案3:直接使用Uri.parse(最简洁)

统一用Uri.parse创建链接,只需维护不同环境的完整baseUrl,无需区分http/https方法:

// 开发环境baseUrl
// final baseUrl = "http://localhost:8080";
// 生产环境baseUrl
final baseUrl = "https://your-production-domain.com";

// 业务代码中直接拼接
final loginUri = Uri.parse("$baseUrl/api/v1/login");

上线时仅需替换baseUrl的值即可。

内容的提问来源于stack exchange,提问作者Abhinav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:50:36