Flutter является open-source фреймворком для разработки приложений, поддерживаемым Google. Он многоплатформенен: приложения, написанные на нем компилируются и запускаются нативно на iOS, Android, в веб-браузере, и на настольных операционных системах - Windows, Mac, Linux. Разработанное на Flutter приложение может быть скомпилированно на все перечисленные платформы (и другие, а также платформы, которые будут добавленны в будущем) и опубликованно в их AppStores без дополнительных усилий на портирование - это является ключевым преимуществом Flutter перед другими фреймворками для разработки приложений, такими как Swift UI (только iOS), Kotlin/Android (только Android). Хотя в нем присутсвует возможность использования нативных виджетов UI фреймворков этих операционных систем, основной режим работы с Flutter - это использование его собственного UI фреймворка, основанного на высокопроизводительной графической библиотеке Skia. Без применения стайлинга Flutter приложения на всех платформах выглядят одинаково - как Material приложения, нативные для среды Android. Flutter написан на и предполагает использование компилируемого open-source языка Dart.
Для разработки на Flutter используются Android Studio и VS Code. Рекоммендуется установить обе среды и их Flutter plugins, используя инструкции на веб-сайте Flutter. Для того чтобы попробовать Dart, используется онлайн среда DartPad
Dart - строго типизированный язык. Переменные имеют тип который не меняется во время исполнения программы - т. е. нельзя присвоить переменной типа String
(строка) значение int
(целое число).
Переменные в Dart можно обьявить и инициализировать с без указания типа, при этом тип будет угадан компилятором и закреплен за переменной. Такой путь является предпочтительным:
var totalNumberOfSuras = 114;
var userName = "Aisha"
Можно указать тип вручную, так стоит делать лишь тогда, когда читающему код будет сложно понять, какого типа переменная
//BAD, так делать не стоит
int indexOfSura = 5;
String cityName = "Medina"
//GOOD, так делать нужно, потому что тип этих переменных не понятен - инициализация происходит после обьявления
int numberOfLinesInFile;
//GOOD, инициализация выполнена не значением - литералом, а вызовом метода, тип возвращаемого значения которого сразу не понятен
String nameOfSura = nameOfCurrentSura();
numberOfLinesInFile = 55;
Подробнее о случаях, когда нужно указывать тип переменных, а когда не нужно см Dart Styleguide.
final
используется когда известно, что значение переменной не изменится в ходе выполнения приложения:
final pathToFile = "fawazahmed0/quran-api/editions/ara-quran-la1.min.json"
попытка присвоить новое значение такой переменной после инициализации вызовет Runtime Error:
pathToFile = "fawazahmed0/quran-api/ara-kingfahadquranc-la.json" //ERROR!
-
int
- целое число от$-2^63$ до$2^63-1$ -
double
- 64 битное число с плавающей точкой по определению IEEE 754
Эти 2 типа являются подклассами типа num
, который стоит избегать, если он точно не нужен. Пример:
var a = 1; // int
var b = 1.0; // double
int x = 8;
double y = b + 6;
num z = 10 - y + x;
// 7 является константой
const valueA = 7;
// Операции с константами возвращают константы
const valueB = 2 * valueA;
Числовые литералы могут также быть записанны как:
- экспоненты
var a = 1.35e2
-$1.35 * 10^2$ - hexadecimal - шестнадцатиричное число
var a = 0xF1A
- F1A in base 16 (3866 in base 10)