如何运行一个命令并使用Flutter/Dart传递一些自定义参数,以便随后可以在main()调用中访问这些参数,例如:
main()
flutter run -device [my custom arg]
因此,我可以使用以下命令访问它:
void main(List<String> args) { print(args.toString()); }
谢谢你。
6mw9ycah1#
没有办法做到这一点,因为当您在设备上启动应用程序时,也没有传递任何参数。如果这是用于开发,则可以将-t lib/my_alternate_main.dart传递给flutter run,以便在不同设置之间轻松切换其中每个可选入口点文件调用具有不同参数或具有不同初始化的全局变量的相同应用程序代码。
-t lib/my_alternate_main.dart
flutter run
更新
为
flutter build apk
flutter build ios
flutter drive
为此添加了--dart-define=...命令行参数。其他键值对,可用作String.fromEnvironment、bool.fromEnvironment、int.fromEnvironment和double.fromEnvironment构造函数中的常量。有关详细信息,请参见Flutter 1.17 no more Flavors, no more iOS Schemas. Command argument that changes everything
--dart-define=...
const t = String.fromEnvironment("TEST");
flutter run --dart-define="TEST=from command line"
请注意,const是必需的,并且变量名区分大小写。
const
uoifb46i2#
向Android Studio Flutter项目添加命令行参数/环境变量。
运行〉编辑配置...
或单击配置下拉选择器
在Additional arguments中添加参数(如果没有空格,则可以使用引号)2.根据需要添加描述性名称
Additional arguments
单击复制按钮,根据需要轻松添加更多配置版本
从下拉菜单中选择您的运行配置
在代码中使用参数例如:const String version = String.fromEnvironment('VERSION');
const String version = String.fromEnvironment('VERSION');
5q4ezhmt3#
main方法的参数可以使用参数--dart-entrypoint-args声明(缩写:-a),例如
main
--dart-entrypoint-args
-a
flutter run -d linux --dart-entrypoint-args some_file.xml
isr3a4wc4#
-dart-define在稳定通道版本1.17中运行从命令行
flutter run --dart-define=myVar="some value"
例如在Main.dart:
const MY_VAR = String.fromEnvironment('myVar', defaultValue: 'SOME_DEFAULT_VALUE');
vc9ivgsu5#
我也有同样的问题,所以我写了一个包和一些说明,可以帮助。https://pub.dev/packages/launch_args我不知道通过flutter命令传递参数的方法,据我所知,你必须首先通过Flutter构建应用程序,然后使用其他CLI传递工具。
flutter
安卓
adb -s $DEVICE_ID shell am start \ -n $ANDROID_PACKAGE/$ANDROID_ACTIVITY \ -ez [arg name] [value] \ -ez [arg name2] [value 2] \ ...
操作系统
$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的内部版本时才能正常工作。
ios-deploy
nzkunb0c6#
@Janux已经答对了。我只想举一个简单的例子:
flutter run -d linux -a my_argument
void main(List<String> args) { print(args); // flutter: [my_argument] }
6条答案
按热度按时间6mw9ycah1#
没有办法做到这一点,因为当您在设备上启动应用程序时,也没有传递任何参数。
如果这是用于开发,则可以将
-t lib/my_alternate_main.dart
传递给flutter run
,以便在不同设置之间轻松切换其中每个可选入口点文件调用具有不同参数或具有不同初始化的全局变量的相同应用程序代码。
更新
为
flutter run
flutter build apk
flutter build ios
flutter drive
为此添加了
--dart-define=...
命令行参数。其他键值对,可用作String.fromEnvironment、bool.fromEnvironment、int.fromEnvironment和double.fromEnvironment构造函数中的常量。
有关详细信息,请参见Flutter 1.17 no more Flavors, no more iOS Schemas. Command argument that changes everything
示例
请注意,
const
是必需的,并且变量名区分大小写。uoifb46i2#
Android Studio
向Android Studio Flutter项目添加命令行参数/环境变量。
编辑
运行〉编辑配置...
或单击配置下拉选择器
添加
在
Additional arguments
中添加参数(如果没有空格,则可以使用引号)2.根据需要添加描述性名称副本
单击复制按钮,根据需要轻松添加更多配置版本
选择
从下拉菜单中选择您的运行配置
使用
在代码中使用参数
例如:
const String version = String.fromEnvironment('VERSION');
5q4ezhmt3#
main
方法的参数可以使用参数--dart-entrypoint-args
声明(缩写:-a
),例如isr3a4wc4#
-dart-define在稳定通道版本1.17中运行
从命令行
例如在Main.dart:
vc9ivgsu5#
我也有同样的问题,所以我写了一个包和一些说明,可以帮助。
https://pub.dev/packages/launch_args
我不知道通过
flutter
命令传递参数的方法,据我所知,你必须首先通过Flutter构建应用程序,然后使用其他CLI传递工具。安卓
操作系统
一定要使用Flutter的缓存工件中托管的
ios-deploy
版本。他们一定对该工具做了一些调整,而不是通过Homebrew安装的标准版本,因为我只有在使用Flutter的内部版本时才能正常工作。nzkunb0c6#
@Janux已经答对了。
我只想举一个简单的例子: