Горячий перезапуск во Flutter: когда, а когда нет?

Может ли кто-нибудь объяснить мне горячую перезагрузку и перезапуск, и когда мне не нужно этого делать (например, изменения в коде, который должен выполнить перестройку), и когда я, безусловно, могу. И во Flutter web, и на мобильных устройствах при отладке, если я не уверен, что внесенные мной изменения повлияли на результат, я закрываю все и делаю перестройку проекта ... некоторое понимание этих двух режимов «быстрой сборки» "сделало бы меня более уверенным в том, какую кнопку я нажимаю во время отладки;)

IDE: Android Studio 3.5.1


person Giovanni Minelli    schedule 16.11.2019    source источник
comment
Чтобы держать ответ в курсе: вот простое объяснение с канала flutter yt youtube.com/watch?v= sgPQklGe2K8   -  person Giovanni Minelli    schedule 21.04.2021


Ответы (3)


Это из официальной документации Flutter для Android Studio и IntelliJ.

Горячая перезагрузка против горячего перезапуска

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

  • Инициализаторы глобальных переменных

  • Инициализаторы статического поля

  • Основной () метод приложения

Для этих изменений вы можете полностью перезапустить приложение, не завершая сеанс отладки.

От: https://flutter.dev/docs/development/tools/android-studio#hot-reload-vs-hot-restart

А вот еще одно объяснение.

Горячая перезагрузка:

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

Горячий перезапуск:

Горячий перезапуск сильно отличается от горячего перезапуска. При горячем перезапуске он уничтожает значение состояния сохранения и устанавливает для них значения по умолчанию. Итак, если вы используете значение состояний в своем приложении, то после каждого горячего перезапуска разработчик получает полностью скомпилированное приложение, и для всех состояний будут установлены значения по умолчанию. Дерево виджетов приложения полностью перестроено с новым типизированным кодом. Горячий перезапуск занимает гораздо больше времени, чем горячая перезагрузка.

Я получил это объяснение от: https://flutter-examples.com/difference-between-hot-reload-and-hot-restart-in-flutter-dart/

person André Junior    schedule 16.11.2019

Для этого есть официальное видео: Горячая перезагрузка ?! | Расшифровка флаттера

Горячая перезагрузка (‹1 с), также известная как« горячая перезагрузка с отслеживанием состояния », должна использоваться как можно чаще. Вы должны помнить, что в этих трех случаях вы должны выполнить горячий перезапуск (~ 10 с) и потерять состояние приложения (текущие переменные):

  1. Инициализаторы глобальных переменных вне класса
  2. Инициализаторы статического поля
  3. Основной () метод приложения

Пример:

int globalVariableNeedsHotRestart = 5; // <-- A global variable.

class StackOverflowWidget {
  static const staticFieldInitialized = Text("Hello"); // <-- Using the static keyword
}

main(List<String> args) {
  print(
      "This won't run until a hot restart. A hot reload won't do it."); // <-- Any code in main method
}
person Ben Butterworth    schedule 29.04.2020

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

person nordine enn    schedule 16.11.2019