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

Mig*_*ivo 8 command program-entry-point args dart flutter

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

flutter run -device [my custom arg]
Run Code Online (Sandbox Code Playgroud)

因此,我可以通过以下方式访问它:

void main(List<String> args) {
  print(args.toString());
}
Run Code Online (Sandbox Code Playgroud)

谢谢。

Jan*_*nux 26

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

flutter run -d linux --dart-entrypoint-args some_file.xml
Run Code Online (Sandbox Code Playgroud)

  • 这是传递命令行参数的唯一真正的解决方案,它们相当于传递给编译后的 exe 文件的参数。 (4认同)
  • **注意** 如果您想传递_命令行参数_,这是这里唯一正确的答案。所有其他答案主要是关于 ENV 变量,这是完全不同的问题。 (3认同)

Bak*_*ker 12

安卓工作室

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


编辑

运行 > 编辑配置...

或单击配置下拉选择器

运行/调试配置选择器

添加

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

名称和配置参数

复制

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

重复配置以添加更多

选择

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

配置选择器

在代码中使用你的参数

例如

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

使用参数


Gün*_*uer 6

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

如果这是发展的,你可以传递-t lib/my_alternate_main.dartflutter run不同的设置之间轻松切换
,其中每个备用入口点文件调用同一个应用程序代码使用不同的参数或具有不同初始化的全局变量。

  • --dart-define 已恢复 https://github.com/flutter/flutter/pull/52041 我无法让它工作 (2认同)

Rob*_*oli 6

-dart-define 在稳定的频道版本 1.17 中工作

从命令行

flutter run --dart-define=myVar="some value"
Run Code Online (Sandbox Code Playgroud)

例如在 main.dart 中:

const MY_VAR = String.fromEnvironment('myVar', defaultValue: 'SOME_DEFAULT_VALUE');
Run Code Online (Sandbox Code Playgroud)