如何运行命令并使用 Flutter/Dart 传递一些自定义参数,以便可以在
main()
调用中访问它们,例如:
flutter run -device [my custom arg]
那么我就可以通过以下方式访问它:
void main(List<String> args) {
print(args.toString());
}
谢谢你。
无法做到这一点,因为当您在设备上启动应用程序时,也不会传递任何参数。
如果这是为了开发,您可以将
-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 不再有 Flavors,不再有 iOS Schemas。改变一切的命令参数
const t = String.fromEnvironment("TEST");
flutter run --dart-define="TEST=from command line"
请注意,
const
是必需的,并且变量名称区分大小写。
main
方法的参数可以使用参数--dart-entrypoint-args
(简称:-a
)来声明,例如
flutter run -d linux --dart-entrypoint-args some_file.xml
-dart-define 正在稳定通道版本 1.17 中运行
从命令行
flutter run --dart-define=myVar="some value"
例如 main.dart:
const MY_VAR = String.fromEnvironment('myVar', defaultValue: 'SOME_DEFAULT_VALUE');
@Janux 已经回答了正确答案。
我只想举一个简单的例子:
flutter run -d linux -a my_argument
void main(List<String> args) {
print(args); // flutter: [my_argument]
}
我遇到了同样的问题,所以我写了一个包和一些可以提供帮助的说明。
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 的内部版本时才能使事情正常工作。
在 Flutter 3.7 之后,我们可以将所有 API 密钥存储在 JSON 文件中,并从命令行将其传递给新的
--dart-define-from-file
标志。
创建一个任意名称的json文件,即
api-keys.json
{
"API_KEY": "a1b2c33d4e5f6g7h8i9jakblc",
"STRIPE_PUBLISHABLE_KEY": "pk_test_aposdjpa309u2n230ibt23908g"
}
您可以针对任何
value
获得key
,如下
const apiKey = String.fromEnvironment('API_KEY');
if (apiKey.isEmpty) {
throw AssertionError('API_KEY is not set');
}
要使用
json
文件运行应用程序,请运行以下命令
flutter run --dart-define-from-file=api-keys.json
如果需要,您可以使用不同的 API 密钥定义多个启动配置,即
api-keys.dev.json
和 api-keys.prod.json
。
如果您使用
VSCode
,您可以在args
文件中添加launch.json
,如下所示
{
"version": "1.0.0",
"configurations": [
{
"name": "Launch",
"request": "launch",
"type": "dart",
"program": "lib/main.dart",
"args": [
"--dart-define-from-file",
"api-keys.dev.json"
]
}
]
}
如果您使用
Android Studio
,您可以将此文件作为附加运行参数传递,如下所示