使用--dart-define的方式打包
config.dart如下:
// 环境配置
class EnvConfig {
final String appTitle;
final String appDomain;
EnvConfig({
required this.appTitle,
required this.appDomain,
});
}
// 获取的配置信息
class Env {
// 获取到当前环境
static const appEnv = String.fromEnvironment(EnvName.envKey);
// 开发环境
static final EnvConfig _debugConfig = EnvConfig(
appTitle: "debugTitle",
appDomain: "http://www.debugxxx.com",
);
// 发布环境
static final EnvConfig _releaseConfig = EnvConfig(
appTitle: "releaseTitle",
appDomain: "http://www.releasexxx.com",
);
// 测试环境
static final EnvConfig _testConfig = EnvConfig(
appTitle: "testTitle",
appDomain: "http://www.testxxx.com",
);
static EnvConfig get envConfig => _getEnvConfig();
// 根据不同环境返回对应的环境配置
static EnvConfig _getEnvConfig() {
print("========appEnv:::$appEnv=============");
switch (appEnv) {
case EnvName.debug:
return _debugConfig;
case EnvName.release:
return _releaseConfig;
case EnvName.test:
return _testConfig;
default:
return _debugConfig;
}
}
}
// 声明的环境
abstract class EnvName {
// 环境key
static const String envKey = "MODE";
// 环境value
static const String debug = "debug";
static const String release = "release";
static const String test = "test";
}
代码中使用如下:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(Env.envConfig.appTitle),//显示envConfig.appTitle
),
body: SingleChildScrollView(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
//显示envConfig.appDomain
Text(
Env.envConfig.appDomain,
style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w700),
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
默认运行后如下:
输入flutter run --dart-define=MODE=test,回车(其中flutter run表示运行flutter程序,--dart-define=是固定写法,NODE=test对应于config.dart下的EnvName类中的envKey = "MODE"和test = "test")
运行如下:Cannot run with sound null safety, because the following dependencies don't support null safety

不支持空安全,添加输入代码如下:
flutter run --dart-define=MODE=test --no-sound-null-safety
运行成功如下:

同理运行处release环境下如下:
输入flutter run --dart-define=MODE=release --no-sound-null-safety 回车
到此方法1结束。
1、点击这里选择Edit Configurations,点击进入

2、点击+号

3、选择flutter
4、填写如下:
依次为名字,启动路径,运行的args,最后点击Apply。
5、这里就会多一个test,如下选择test运行

结果如下:
到此结束。