如何在Flutter / Dart中将参数从命令行传递给main?

时间:2019-03-05 13:45:38

标签: dart flutter command main args

您将如何运行命令并使用Flutter / Dart传递一些自定义参数,以便随后可以在main()调用中对其进行访问,例如:

flutter run -device [my custom arg]

这样我就可以使用:

void main(List<String> args) {
  print(args.toString());
}

谢谢。

5 个答案:

答案 0 :(得分:4)

-dart-define在稳定版1.17版本中正常工作

从命令行

flutter run --dart-define=myVar="some value"

例如main.dart:

const MY_VAR = String.fromEnvironment('myVar', defaultValue: 'SOME_DEFAULT_VALUE');

答案 1 :(得分:4)

Android Studio

向Android Studio Flutter项目添加命令行参数/环境变量。


编辑

运行>编辑配置...

或 点击“配置”下拉选择器

run/debug config selector

添加

Additional arguments中添加参数(如果没有空格,则引号可选) 2.如果愿意,请添加描述性名称

Name and config arguments

复制

点击复制按钮即可根据需要轻松添加更多配置版本

Duplicate config to add more

选择

从下拉列表中选择运行配置

Config Selector

使用

在代码中使用参数

例如

const String version = String.fromEnvironment('VERSION');

Use Arguments

答案 2 :(得分:2)

无法执行此操作,因为在设备上启动应用程序时,也不会传递任何参数。

如果这是为了开发,则可以将-t lib/my_alternate_main.dart传递到flutter run以在不同的设置之间轻松切换
其中,每个备用入口点文件都使用不同的参数或初始化的全局变量使用不同的参数调用相同的应用程序代码。

答案 3 :(得分:2)

main 方法的参数可以用参数 --dart-entrypoint-args(简称:-a)声明,例如

flutter run -d linux --dart-entrypoint-args some_file.xml

答案 4 :(得分:0)

我遇到了同样的问题,所以我写了一个包和一些可以帮助的说明。

https://pub.dev/packages/launch_args

我不知道通过 flutter 命令传递参数的方法。据我所知,你必须先通过 Flutter 构建应用程序,然后使用其他 CLI 来传递工具。

安卓

adb -s $DEVICE_ID shell am start \
  -n $ANDROID_PACKAGE/$ANDROID_ACTIVITY \
  -ez [arg name] [value] \
  -ez [arg name2] [value 2] \
  ...

iOS

$FLUTTER_HOME/bin/cache/artifacts/ios-deploy/ios-deploy --id $DEVICE_ID \
  --bundle build/ios/iphoneos/Runner.app \
  --debug \
  --args [arg name] [arg value] [arg name2] [arg value2] ...

请务必使用托管在 Flutter 缓存工件中的 ios-deploy 版本。他们肯定对该工具进行了一些调整,而不是您可以通过 Homebrew 安装的标准工具,因为我只能在使用 Flutter 的内部版本时才能正常工作。