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

Flutter:使用envied包搭建开发、测试、生产环境

基于envied包实现DEV/TEST/PROD环境区分的两种方案

方案一:多.env文件 + 构建参数(推荐轻量场景)

这种方式无需修改原生项目配置,仅通过文件和构建参数切换环境,适合只需要区分环境变量的场景:

  1. 创建环境专属.env文件
    在项目根目录创建三个.env文件:

    • .env.dev:开发环境变量(测试API地址、测试密钥等)
    • .env.test:测试环境变量
    • .env.prod:生产环境变量
  2. 修改Env类的envied配置
    通过String.fromEnvironment动态读取构建参数,指定对应.env文件路径:

    import 'package:envied/envied.dart';
    
    part 'env.g.dart';
    
    // 默认使用dev环境,可通过--dart-define=ENV=xxx切换
    @envied(path: '.env.${String.fromEnvironment('ENV', defaultValue: 'dev')}')
    abstract class Env {
        @EnviedField(varName: 'KEY')
        static const key = _Env.key;
        @EnviedField(varName: 'BASE_URL')
        static const baseUrl = _Env.baseUrl;
    }
    
  3. 生成对应环境的代码
    执行build_runner时通过--define指定环境:

    # 开发环境
    dart run build_runner build --define=ENV=dev
    # 测试环境
    dart run build_runner build --define=ENV=test
    # 生产环境
    dart run build_runner build --define=ENV=prod
    
  4. 运行/打包时指定环境
    启动项目或打包时传递环境参数:

    flutter run --dart-define=ENV=dev
    flutter build apk --dart-define=ENV=prod
    

方案二:结合Flutter Flavors(适合复杂场景)

如果项目需要为不同环境配置不同的应用图标、名称或原生资源,Flavors是更合适的选择:

  1. 配置Flavors
    在Android的build.gradle和iOS的project.pbxproj中配置dev、test、prod三个Flavors(具体配置可参考Flutter官方Flavors说明)

  2. 关联Flavors与.env文件
    通过构建模式或Flavor标识匹配对应的.env文件:

    import 'package:envied/envied.dart';
    import 'package:flutter/foundation.dart';
    
    part 'env.g.dart';
    
    String get _envFilePath {
      // 根据构建模式自动匹配环境
      if (kDebugMode) return '.env.dev';
      if (kProfileMode) return '.env.test';
      return '.env.prod';
      // 若需严格绑定Flavor,可通过原生通道传递Flavor名称后判断
    }
    
    @envied(path: _envFilePath)
    abstract class Env {
        @EnviedField(varName: 'KEY')
        static const key = _Env.key;
        @EnviedField(varName: 'BASE_URL')
        static const baseUrl = _Env.baseUrl;
    }
    
  3. 按Flavor运行/打包
    针对不同Flavor执行命令:

    # 运行开发环境Flavor
    flutter run --flavor dev -t lib/main_dev.dart
    # 打包生产环境Flavor
    flutter build apk --flavor prod -t lib/main_prod.dart
    

方案选择建议

  • 仅需区分环境变量:选方案一,配置成本低,切换灵活;
  • 需要环境专属资源/配置:选方案二,实现更彻底的环境隔离。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:32:44