Почему dart не позволяет инициализировать поля через this в теле конструктора?

Рейтинг: 0Ответов: 1Опубликовано: 27.05.2023
class Person {
  String name;
  int age;

  Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
}

Dart не даёт компилировать этот код, почему так?

Ответы

▲ 0

После внедрения нулевой безопасности, такой код перестал работать. Все не нулевые переменные должны быть инициализированы. В вашем случае просто инициализируйте переменные сразу в конструкторе.

class Person {
  
  String name;
  int age;

  Person(this.name, this.age);
}

Если вы планируете преобразование, то используйте ключевое слово late

late String name;
late int age;

Или через конструктор

Person(String name, int age) : this.name = name, this.age = age;