VSCode中Flutter配置dart-define后获取值为空的问题
Flutter中dart-define变量获取为空的解决办法
问题描述
我按照VSCode Flutter配置文档设置了launch.json,配置内容如下:
"configurations": [ { "name": "appname (DEV)", "request": "launch", "type": "dart", "program": "lib/main_dev.dart", "console": "debugConsole", "flutterMode": "debug", "args": [ "--flavor", "dev" ], "cwd": "${workspaceFolder}", "toolArgs": [ "--dart-define", "FIREBASE_ANDROID_API_KEY=xxxxxxxxx", "--dart-define", "FIREBASE_IOS_API_KEY=xxxxxxxxxx", "--dart-define", "EAS_API_KEY=xxxxxxxxxx", "--dart-define", "EAS_TOKEN=xxxxxxxxx", "--dart-define", "SIGNING_CERTIFICATE_HASH=xxxxxxxxxx", "--dart-define", "DB_PASSWORD=xxxxxxxxxxx" ] }, ]
但在代码中通过String.fromEnvironment('DB_PASSWORD')获取该变量值时,始终返回空字符串"",求解决办法。
解决步骤
确认选中正确的调试配置
启动调试前,在VSCode调试面板的下拉菜单中,确保选中的是appname (DEV)这个配置,而非默认的Flutter启动项。修正toolArgs的参数格式
将toolArgs中--dart-define和对应的键值对合并为单个字符串,避免拆分两行导致解析错误:"toolArgs": [ "--dart-define=FIREBASE_ANDROID_API_KEY=xxxxxxxxx", "--dart-define=FIREBASE_IOS_API_KEY=xxxxxxxxxx", "--dart-define=EAS_API_KEY=xxxxxxxxxx", "--dart-define=EAS_TOKEN=xxxxxxxxx", "--dart-define=SIGNING_CERTIFICATE_HASH=xxxxxxxxxx", "--dart-define=DB_PASSWORD=xxxxxxxxxxx" ]清理缓存并重启环境
执行flutter clean清理项目缓存,关闭VSCode后重新打开,再启动调试。旧缓存可能导致参数无法正常生效。检查调试启动命令
启动调试后,查看调试控制台输出的启动命令,确认--dart-define=DB_PASSWORD=xxxxxxxxxxx是否被包含在内。如果没有,检查launch.json是否放在项目根目录的.vscode文件夹下,路径是否正确。核对变量名称大小写
String.fromEnvironment对大小写敏感,确保代码中使用的'DB_PASSWORD'和配置里的键名完全一致,无拼写或大小写错误。使用const修饰变量
String.fromEnvironment是编译期常量,用const修饰能确保编译时正确解析参数:const dbPassword = String.fromEnvironment('DB_PASSWORD');
内容的提问来源于stack exchange,提问作者Camillo bucciarelli
相关产品推荐
相关产品推荐

