Список инициализации
Список инициализации в Dart - это специальный синтаксис, который позволяет задать начальные значения для полей класса непосредственно перед выполнением тела конструктора. Он указывается после двоеточия в сигнатуре конструктора. В список инициализации можно передавать значения по умолчанию, результаты выражений, а также параметры конструктора. Особенность списка инициализации в том, что он выполняется до тела конструктора и может использоваться для инициализации final полей.
Синтаксис
ClassName(parameters) : field1 = value1, field2 = value2
{
// тело конструктора
}
Пример
Давайте создадим класс Point с двумя полями и инициализируем их через список инициализации:
class Point
{
final int x;
final int y;
Point(this.x, this.y);
}
void main()
{
Point p = Point(1, 2);
print('${p.x}, ${p.y}');
}
Результат выполнения кода:
"1, 2"
Пример
Давайте используем список инициализации для вычисления значения поля на основе параметра:
class Rectangle
{
final int width;
final int height;
final int area;
Rectangle(this.width, this.height) : area = width * height;
}
void main()
{
Rectangle rect = Rectangle(3, 4);
print(rect.area);
}
Результат выполнения кода:
12
Пример
Давайте инициализируем несколько полей, используя параметры конструктора и значения по умолчанию:
class User
{
final String name;
final int age;
final bool isActive;
User(String name, {int age = 18})
: name = name.toUpperCase(),
age = age,
isActive = true;
}
void main()
{
User user = User('abcde');
print('${user.name}, ${user.age}, ${user.isActive}');
}
Результат выполнения кода:
"ABCDE, 18, true"