Как вы передаете аргументы из командной строки в основной в Flutter/Dart?
Как бы вы запустили команду и передали некоторые пользовательские аргументы с помощью Flutter/Dart, чтобы они были доступны в main()
вызов, такой как:
flutter run -device [my custom arg]
Итак, я могу получить к нему доступ с помощью:
void main(List<String> args) {
print(args.toString());
}
Спасибо.
6 ответов
Это невозможно сделать, потому что при запуске приложения на устройстве также не передаются параметры.
Если это для развития, вы можете передать -t lib/my_alternate_main.dart
в flutter run
легко переключаться между различными настройками
где каждый альтернативный файл точки входа вызывает один и тот же код приложения с разными параметрами или с разными инициализированными глобальными переменными.
Android Studio
Добавление аргументов командной строки / переменных среды в проект Android Studio Flutter.
редактировать
Выполнить> Изменить конфигурации...
или щелкните раскрывающийся переключатель Конфигурация
Добавить
Добавьте свои аргументы в
Additional arguments
(кавычки необязательны, если нет пробелов)
2. Добавьте описательное имя, если хотите
Копировать
Нажмите кнопку копирования, чтобы при необходимости легко добавить другие версии конфигурации.
Выбрать
Выберите конфигурацию запуска из раскрывающегося списка
Использовать
Использование ваших аргументов в коде
например
const String version = String.fromEnvironment('VERSION');
Аргументы за
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');
user2339010 уже ответил на правильный ответ.
Я просто хочу привести простой пример:
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, а затем использовать другие интерфейсы командной строки для передачи инструментов.
Андроид
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] ...
Обязательно используйте версию
ios-deploy
это размещено в кэшированных артефактах Flutter. Должно быть, они внесли некоторые изменения в этот инструмент по сравнению со стандартным, который вы можете установить через Homebrew, потому что я мог заставить все работать только тогда, когда использовал внутреннюю версию Flutter.