您将如何运行命令并使用Flutter / Dart传递一些自定义参数,以便随后可以在main()
调用中对其进行访问,例如:
flutter run -device [my custom arg]
这样我就可以使用:
void main(List<String> args) {
print(args.toString());
}
谢谢。
答案 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 Flutter项目添加命令行参数/环境变量。
运行>编辑配置...
或 点击“配置”下拉选择器
在Additional arguments
中添加参数(如果没有空格,则引号可选)
2.如果愿意,请添加描述性名称
点击复制按钮即可根据需要轻松添加更多配置版本
从下拉列表中选择运行配置
在代码中使用参数
例如
const String version = String.fromEnvironment('VERSION');
答案 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 的内部版本时才能正常工作。