В этой книге даны необходимые элементы, база, которую нужно знать Flutter-разработчику, чтобы писать кросс-платформенные мобильные приложения под Android и iOS на языке Dart. Все это представлено в наглядной форме, на практических примерах, в формате уроков. После их освоения вы сможете именовать себя Flutter-разработчиком.Flutter and the related logo are trademarks of Google LLC. We are not endorsed by or affiliated with Google LLC.
Приведённый ознакомительный фрагмент книги Быстрый старт Flutter-разработчика предоставлен нашим книжным партнёром — компанией ЛитРес.
Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других
Урок 2. Язык программирования Dart
В этой главе:
— Переменные, типы и область видимости
— Функции
— Конструкторы
— Наследование
— Примеси (mixin)
— Callable классы
— Дженерики
— Асинхронные функции
— Исключения
— Использование библиотек
— Компиляция
Введение
Приложения под Flutter пишутся на языке Dart. Даже сам фреймворк написан на нем. Dart — это высокоуровневый объектно-ориентированный язык программирования общего назначения с открытым исходным кодом. Был разработан в Google. Испытал влияние C, Javascript, C#, Java. В нем также как и в Java и C# присутствует garbage collector. Язык поддерживает интерфейсы, примеси (англ. Mixin), абстрактные классы, дженерики и статическую типизацию.
Dart был представлен публике в 2011 году авторами Ларсом Барком (Lars Bark) и Каспером Лундом (Kasper Lund). Релиз версии 1.0 состоялся в 2013 году, а версии 2.0 в 2018
Примечание: Здесь и далее в этом курсе мы рассматриваем Dart версии 2
Все приложения на Dart, как и на C и в Java, имеют точку входа в функции main ()
В случае, если необходимо запустить программу на Dart из командной строки, то можно использовать параметризованную main:
Переменные, типы и область видимости
Dart типобезопасный язык. В нем используется как статическая типизация на этапе компиляции, так и динамическая проверка во времени исполнения (runtime) программы. Несмотря на наличие статической типизации, указывать тип переменной необязательно. Например, все объявления и инициализации ниже корректные:
Примечание: В Dart 2 ключевое слово new стало необязательным
Видимость
По умолчанию, все переменные имеют публичную область видимости. Таких привычных для Java-программистов ключевых слов, как private, protected и public в Dart нет.
Однако если добавить нижнее подчеркивание [_] к имени переменной, такая переменная будет иметь область видимости библиотеки, в которой она находится.
Типы
Все объекты в Dart наследуются от базового типа Object. Это аналог Object в Java. В нем также есть метод hasCode () и аналог equals, который заменяет оператор сравнения ==
Так же в классе Object присутствует метод toString ()
Встроенные типы включают:
— Числовые (num и его наследники int и double)
— Строковые (strings)
— Булевы (Booleans)
— Списки, или массивы (list)
— Сеты (set)
— Мапы (map)
— Руны (for expressing Unicode characters in a string)
— Символы (symbols)
int — Целочисленные переменные. На виртуальной машине Dart диапазон составляет от — 263 до 263—1
Примечание: При компиляции в JavaScript диапазон int-a — 253 до 253—1
double — 64-битные числа с плавающей запятой
И int и double наследуются от типа num
String
Строковые переменные в Dart представляют собой последовательности из UTF-16 символов. Для инициализации можно использовать как двойные, так и одинарные кавычки:
Значения переменных можно использовать в строках с помощью конструкции $ {выражение}
bool
Для создания булевых переменных в Dart существует ключевое слово bool. При инициализации можно использовать литералы true и false. То есть, инициализация bool b = 0; — некорректна, правильно
List
Списки — это коллекции проиндексированных объектов. Примеры объявления и инициализации списков:
Для инициализации в Dart 2.3 добавлен спред оператор — троеточие — с помощью него можно добавить в список множество значений:
Sets
Сеты — это неупорядоченные наборы уникальных элементов. В Dart для того, чтобы создать сет, нужно использовать фигурные скобки для непустого набора и фигурные скобки в сочетании с угловыми и типом объектов для пустого:
Maps
Мапы — это наборы данных в формате ключ-значение. Ключами, как и значениями, могут быть объекты любых типов. Каждый ключ является уникальным, значения могут быть разными, а могут дублироваться. Посмотрим на примере:
Альтернативные способы инициализации
Runes
Dart поддерживает руны — спецсимволы юникод. Используйте, если хотите добавить смайлики. Попробуйте запустить в dartpad
final и const
В языке также присутствуют ключевые слова final и const.
Если переменную не планируется изменять, то следует задать ей модификатор final перед типом или словом var. Такая переменная может быть проинициализирована единожды. Переменные const неявно считаются final. Такие переменные используются для задания констант на этапе компиляции.
Функции
В Dart даже функции являются объектами. Это значит, что функции можно назначать переменным и передавать в качестве аргументов в другие функции. Тип возвращаемого значения указывается перед именем функции. Делать это необязательно, хотя и рекомендуется:
Поскольку эта функция содержит всего одно выражение, ее можно укоротить до одной строчки:
Оператор => — это сокращение фигурных скобок и слова return.
Опциональные параметры
При объявлении функции мы можем в ее сигнатуре указать значения по умолчанию. Например, нам понадобится вызывать какую-то функцию много раз с одним и тем же параметром, но при этом необходимо сохранить гибкость. В таком случае, при вызове функции с параметром по умолчанию его (этот параметр) можно не указывать.
В Dart существует два типа опциональных параметров: позиционные и именованные. Рассмотрим их подробнее.
Примечание: Опциональный параметр не может быть одновременно и позиционным и именованным
Именованные — такие параметры при вызове функции можно указывать опционально с именем и последующим двоеточием и оборачиванием в фигурные скобки. Пример:
Аннотация @required делает этот параметр обязательным
Позиционные — опциональные параметры, помещаемые при объявлении функции в квадратные скобки. Они будут читаться при вызове по их позиции среди аргументов.
Функции как объекты
Функции можно передавать в качестве параметров другим функциям, а также назначать их переменным:
Конец ознакомительного фрагмента.
Приведённый ознакомительный фрагмент книги Быстрый старт Flutter-разработчика предоставлен нашим книжным партнёром — компанией ЛитРес.
Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других