Быстрый старт Flutter-разработчика. Андрей Алеев
Читать онлайн книгу.В случае сборки release iOS используется AOT. Для release Android может использоваться как AOT, так и CoreJIT (вариация AOT).
При разработке мы хотим видеть изменения быстро, и у нас есть такая возможность – Hot Reload. Он как раз-таки и работает по паттерну JIT. Платформа формирует некие снимки состояния – snapshots, которые затем переиспользуются.
Типы snapshot- ов
Использование snapshot-ов в debug режиме
Использование snapshot-ов в release режиме
Итоги обзора
Dart – мощный инструмент разработки, впитавший в себя многое от Java, Javascript и других языков, успешно применямых в промышленной разарботке. Перейти на Dart программистам, писавшим ранее на ООП-языках не составит труда, а новичкам изучить его несложно. На текущий момент Dart уже можно применять в релизных продуктах:
– Flutter – для мобильных приложений
– AngularDart и Hummingbird для web-разработки
– Aqueduct для бэкенда
Урок 3. StatelessWidget и StatefulWidget
В этой главе:
– Все – виджет
– Состояние виджета
– StatelessWidget
– StatefulWidget
– Типы состояний: Ephemeral и App
Все – виджет
Начнем с ответа на вопрос «Что такое Widget во Flutter?». Виджет – это основной строительный блок пользовательского интерфейса приложений. Причем, эти блоки, как матрешки, можно вкладывать один в другой, образуя вложенную иерархичную структуру. Таким образом все во Flutter – это виджет; начиная от текста на кнопке, заканчивая самим приложением, которое тоже является виджетом. Главное, что нужно сразу понять про виджеты, это то, что по типу они разделяются на две основные категории: Stateless и Stateful. Если вы знаете английский, то из названия Вы можете сразу понять в чем их отличие. Одни имеют состояние, другие – нет. Давайте копнем поглубже.
Состояние виджета
Состояние – это «любая информация, необходимая для отрисовки UI в любой момент времени». Будучи Java и Kotlin разработчиком, я привык писать в императивном стиле. Например, textView.setText («Lorem») или textView. text=«Lorem». То есть мы меняли внешний вид виджета напрямую, прямо указывая системе что надо поменять.
Поскольку Flutter декларативный, пользовательский интерфейс строится как некоторая функция от состояния:
UI = f (state)
Другими словами, UI наблюдает за Состоянием, и если вы хотите изменить UI, Вам нужно обновить состояние. И здесь на сцену выходят два типа виджетов – те, которым можно менять состояние в рантайме, и те, которым нельзя. Здесь уместо провести аналогию с val и var переменными в Kotlin. Рассматривайте StatelessWidget как val, а StatefulWidget как var перменную.
StatelessWidget
Stateless виджет не может менять свое состояние, то есть он иммутабелен. Такой тип виджетов удобно использовать для статичных элементов экрана, которые надо отрисовать один раз и не трогать больше. Например, это могут быть заголовки, label-ы, иконки, изображения из локальных ресурсов и т. п. Самый яркий пример – это само приложение. Оно наследуется от класса StatelessWidget. Однако, давайте создадим для тренировки свой StatelessWidget. Пусть это будет простой label с каким-то задаваемым текстом.
class