Flutter 使用与从.env文件中获取环境相同的方法从build命令获取flift中的环境

Flutter 使用与从.env文件中获取环境相同的方法从build命令获取flift中的环境,flutter,dart,environment-variables,Flutter,Dart,Environment Variables,我正在使用包在.env中的flatter中设置环境变量 要读取变量,我必须有这是我的main.dart Future main() async { await DotEnv().load('.env'); runApp(MyApp()); } 然后像这样读 print(DotEnv().env['VAR_NAME']); flutter run --dart-define=APP_VERSION=0.1.2 根据问题,我还可以像这样在build命令中添加变量 print(DotE

我正在使用包在.env中的flatter中设置环境变量

要读取变量,我必须有这是我的main.dart

Future main() async {
  await DotEnv().load('.env');
  runApp(MyApp());
} 
然后像这样读

print(DotEnv().env['VAR_NAME']);
flutter run --dart-define=APP_VERSION=0.1.2
根据问题,我还可以像这样在build命令中添加变量

print(DotEnv().env['VAR_NAME']);
flutter run --dart-define=APP_VERSION=0.1.2
然后要读取build命令中的设置,我必须这样做

const appVersion = String.fromEnvironment('APP_VERSION', defaultValue: 'development');
有没有一种方法可以让我以同样的方式读取.env文件或build命令中设置的变量

我将在本地开发的.env文件中设置变量,并在dev和prod环境中通过命令设置这些变量。那么,我怎样才能找到一种对这两种情况都有效的方法呢


谢谢你

我不熟悉你提到的套餐,但一个相当安全的选择是:

创建负责处理环境变量的singleton类:

final env=env.uz();
环境类{
Env.();//防止意外初始化的私有构造函数
}
创建一个从环境变量的字符串中获取环境变量的方法,并选择一些默认值。在我看来,命令行参数优先,但这是一个品味问题:

stringget(字符串键,{stringdefaultvalue}){
final fromFile=DotEnv().env[key];
final fromArgs=String.fromEnvironment(键);
//从命令行返回值(如果存在)
//如果不是,则从.env文件返回值
//如果仍然为null,则返回默认值
从参数返回??从文件返回??默认值;
}
然后,您可以使用以下方式全局访问数据:

env.get('MY_VARIABLE_NAME',defaultValue:'hello');
为了更加简洁,您可以使用Dart的可调用类,方法是将
get()
重命名为
call()
,然后使用:

env('MY_VARIABLE_NAME',defaultValue:'hello');

谢谢,我会试试这个