赞
踩
使用--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: <Widget>[ //显示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运行
结果如下:
到此结束。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。