Установка переменных среды в Flutter

Например, создание клиента для API, например Twitch.

В двоичном коде Dart CLI я мог бы использовать общую переменную среды или переменную определения Дарта. Например, используя как резервные копии:

main() {
  String clientId = 
      // dart -dCLIENT_ID='abc bin/example.dart
      // This is considered "compiled-into" the application.
      const String.fromEnvironment('CLIENT_ID') ??

      // CLIENT_ID='abc' dart bin/example.dart
      // This is considered a runtime flag.
      Platform.environment['CLIENT_ID'];

  // Use clientId.
}

Есть ли у Flutter способ установить оба из них, в частности...

  • Во время dev
  • При отправке в prod

С удовольствием помогите с некоторыми документами, как только я выясню, как:)

Ответ 1

Для конфигурации общий шаблон, который я видел, состоит в использовании отдельных основных файлов. т.е.

flutter run -t lib/production_main.dart

а также

flutter build apk -t lib/debug_main.dart

А затем в этих разных основных файлах настройте нужные конфигурации.

Что касается чтения идентификаторов, вы можете сделать это из произвольных ресурсов https://flutter.io/assets-and-images/.

Я полагаю, что во Flutter можно читать из среды, как вы предлагаете, однако я не знаю, как установить эти переменные среды на iOS или Android.

Ответ 2

Поскольку я тоже пытался решить эту проблему и столкнулся с этой веткой, я просто хотел добавить это для людей, которые ищут решение в будущем... В настоящее время существует поддерживаемый способ получения информации о том, запущено приложение или нет:

const bool isProduction = bool.fromEnvironment('dart.vm.product');

По предложению:

https://twitter.com/FlutterDev/status/1048278525432791041

https://github.com/flutter/flutter/issues/4014