Как передать переменную dart в index.html

#flutter #environment-variables #flutter-web

#flutter #переменные среды #flutter-web

Вопрос:

Я работал над своим приложением flutter с сборками среды, и я хотел бы изменить свой index.html файл в зависимости от типа веб-сборки, которую я выполняю.

Есть ли способ сделать это? У меня есть env.dart, который содержит нужные мне переменные, но я не знаю, как изменить index.html с моей переменной dart.

Спасибо вам.

Комментарии:

1. На самом деле это не очень хороший ответ, но когда мне нужно было сделать это в прошлом, я написал скрипт сборки на python, который изменяет html-файл, а затем запускает мои команды сборки.

Ответ №1:

Решение с помощью shellscript

В настоящее время я использую один, но это сценарий оболочки

Настройка для конкретной среды index.html

Из папки вашего проекта создайте среду, в которой вы будете хранить свои index.html файлы:

 mkdir config
cd config
mkdir release
mkdir dev
mkdir uat
  

Затем скопируйте разные index.html (особенно из web/) в config/release/ config/dev/ и config/uat/

 cp ../web/index.html release/ amp;amp; cp ../web/index.html dev/ amp;amp; cp ../web/index.html uat/
  

/! СОЗДАЙТЕ РЕЗЕРВНУЮ КОПИЮ ВАШЕГО ТЕКУЩЕГО ФАЙЛА, РАСПОЛОЖЕННОГО В WEB/INDEX.HTML
Скрипт скопирует index.html из ваших различных каталогов сред непосредственно в web/ и удалите текущий файл в web /. Я отказываюсь от какой-либо ответственности, если вы навсегда удалите файл. Вы предупреждены.


Файл сценария

Создайте файл сценария:

 touch run.sh amp;amp; chmod  x run.sh
  

скопируйте этот скрипт внутрь:

 cp config/$1/index.html web/index.html amp;amp; flutter run -d chrome --no-sound-null-safety
  

Как использовать

И запустите ее либо с помощью ./run.sh release , ./run.sh dev либо ./run.sh dev

Используйте —dart-define для переменной, зависящей от вашей среды

Я также запускаю этот скрипт вместе с настройкой переменных среды с помощью --dart-define

 flutter run --dart-define=MY_ENV_VARIABLE=ITS_VALUE
  

ПРИМЕЧАНИЕ: в настоящее время я отключаю защиту от нуля из-за библиотек моего проекта, которые еще не защищены от нуля.