Variables

Init

var name = 'Test';
Object name = 'Test';

var hex = 0xDEADBEEF;
var number = 1;
double d = 0.1;
num x = 1;  // x — is double and int
x += 0.1;

String name = 'Test';

int? lineCount;  // default: null
assert(lineCount == null);

Late/Lazy

Dart подсветит, если посчитает, что вы объявили переменную (не nullable). Чтобы указать, что переменная будет проинициализирована позже, можно пометить ее ключевым словом late.

late String descr;

void main() {
    descr = 'Test';
    print(descr);
}

late используют в двух случаях:

  • Если инициализация переменной слишком дорогостоящая операция

  • Мы инициализируем инстанс переменной, и этот инициализатор нуждается в доступе к this (то есть, переменная должна быть проинициализирована после вызова конструктора и инициализации всего объекта).

По факту, инициализация произойдет только при обращении к переменной (lazy)

Const & Final

Если вы не собираетесь менять значение переменной, объявляем ее как final. const — это частный случай final-переменной, она получает свое значение на этапе компиляции.

Build-in types

  • int, double

  • String

  • bool

  • List

  • Set

  • Map

  • Runes (умные char'ы)

  • Symbol

  • null (класс Null)

Другие типы, имеющие специальные роли в Dart:

  • Object — суперкласс для всех других классов в Dart, за исключением Null

  • Future и Stream — используется в асинхронных функциях

  • Iterable — используется в циклах for и в функциях-генераторах

  • Never — индикатор того, что функция может никогда не вернуть своего результата (например, из-за исключения)

  • dynamic — индикатор того, что мы хотим отключить статические проверки. Обычно, лучше использовать Object или Object?.

  • void — индикатор того, что значение никогда не используется. Часто используется для типа возвращаемого значения.

Converting

Strings

Lists

Spread operator (...)

if и for

Sets

Maps

Last updated