Dart - это объектно-ориентированный язык программирования, созданный компанией Google.
Функция main ( ) { ... } является входной точкой и именно с неё начинает своё выполнение все программы на Dart, по-умолчанию возвращает тип void и может принимать список строк, т.е. List<String> arguments.
К примеру:
void main ( ) { ... }
Комментирование кода может быть в одну строку, так и многострочным.
// Комментарий /* Комментарий */
В качестве демонстрации работы кода рекомендую использовать сайт https://dartpad.dev/
Числовые: int (от -263 до 263 - 1) и double (в соответствии со стандартом IEEE 754)
// Числовые int numberInteger = 5; print ( numberInteger.runtimeType ); // int double numberDouble = 12.2; print ( numberDouble.runtimeType ); // double var numberVarInteger = 7; print ( numberVarInteger.runtimeType ); // int var numberVarDouble = 14.4; print ( numberVarDouble.runtimeType ); // double num numberNumInteger = 9; print ( numberNumInteger.runtimeType ); // int num numberNumDouble = 16.6; print ( numberNumDouble.runtimeType ); // double
Строковые: String (само значение можно указывать как в двойных так и в одинарных кавычках) и Runes (кодировка UTF-32)
// Строковые String strLang = "Язык Dart"; print ( strLang.runtimeType ); // String var strLesson = 'Урок'; print ( strLesson.runtimeType ); // String int numLesson = 1; print ( '$strLang - ${strLesson.toUpperCase()} $numLesson' ); // Язык Dart - УРОК 1
Как можно было заметить при использовании переменной в строке необходимо указывать её с символом $, если же мы хотим произвести какие-либо манипуляции перед этим - нужно заключить в фигурные скобки.
Логические: bool
// Boolean bool boolValue = 1 == int.parse('1'); print ( boolValue.runtimeType ); // bool print ( boolValue ); // true var boolVar = '1' == int.parse('1'); print ( boolVar.runtimeType ); // bool print ( boolVar ); // false print ( 2.2 == double.parse('2.2') ); // true print ( "2.2" == double.parse('2.2') ); // false print ( 2 == double.parse('2.0') ); // true print ( 2.0 == double.parse('2.0') ); // true print ( 1 == '1' ); // false print ( 1.toString() == '1' ); // true print ( 3.1416.toString() == '3.14' ); // false print ( 3.1416.toStringAsFixed(2) == '3.14' ); // true print ( 3.1416.toStringAsFixed(0) == '3' ); // true
Из примеров выше видно что в Dart есть разница представлено ли значение 1 (к примеру) в виде int, либо String ('1').
Массивы (Коллекции): List [ value ], Set { uniqValue }, Map { uniqKey : value }
// Привычные массивы в Dart это коллекции и делятся они на три группы // Списки (List) - коллекция элементов с доступом по ключу (порядку) var listInteger = [1,2,3]; print ( listInteger.runtimeType ); // JSArray<int> var listNum = [1,2.2,3]; print ( listNum.runtimeType ); // JSArray<num> var listDouble = [1.1,2.2,3.3]; print ( listDouble.runtimeType ); // JSArray<double> var listObject = [1,'2',3]; print ( listObject.runtimeType ); // JSArray<Object> var listString = ['1','2','3']; print ( listString.runtimeType ); // JSArray<String> var listAdd = <Object>[]; listAdd.add('newElement'); print ( listAdd.runtimeType ); // JSArray<Object> // Множества (Set) - неупорядоченная коллекция уникальных элементов var setInteger = {1,2,3}; print ( setInteger.runtimeType ); // _LinkedHashSet<int> var setString = {'word', 'hello', 'world', 'hi', 'dart'}; print ( setString.runtimeType ); // _LinkedHashSet<String> var setAdd = <String>{}; setAdd.add('newElement'); print ( setAdd.runtimeType ); // _LinkedHashSet<Object> // Словари (Map) - объект связывающий ключ и значение var mapString = { 'two': 'два', 'four': 'четыре', 'eight': 'восемь' }; print ( mapString.runtimeType ); // JsLinkedHashMap<String, String> var mapInteger = { 2: 'two', 4: 'four', 8: 'eight', }; print ( mapInteger.runtimeType ); // JsLinkedHashMap<int, String> var mapAdd = Map(); mapAdd['two'] = 'два'; mapAdd['four'] = 'четыре'; mapAdd['eight'] = 'восемь'; print ( mapAdd.runtimeType ); // JsLinkedHashMap<dynamic, dynamic>
Как Вы могли заметить - каждая переменная в Dart по сути объект к которому можно обратиться для выполнения над ним каких-либо операций.
Из приведённого кода выше разберём с чем уже столкнулись:
value.runtimeType - получить тип данных value.toUpperCase - перевести строку в верхний регистр int.parse('2') - получить из строки число типа int double.parse('2.1') - получить из строки чисто типа double value.toString() - преобразовать в строку value.toStringAsFixed(2) - преобразовать в строку с округление до 2 знаков после запятой
Для того чтобы задать переменную перед ней указываем ключевое слово var (тип определится автоматически из числа всех), num (тип определится автоматически из числа числовых), либо указываем конкретный тип данных.
Также есть dynamic, который позволяет менять переменной свой тип данных в зависимости от содержимого.
Если переменная задана, но ей не присвоено значение - она равна null.