Классы, оформленные с помощью @freezed, не могут иметь изменяемых свойств

#flutter #dart

#flutter #dart

Вопрос:

Запуск build runner в следующем коде выдает ошибку

 @freezed
abstract class Person implements _$Person {
  const Person._(); // Added constructor
  int _readCount = 0;
  factory Person({ String name, int age }) = _Person;
  getPrivatVar(){ return _readCount   }
}
  

Классы, оформленные с помощью @freezed, не могут иметь изменяемых свойств

Но _readCount является частным свойством. Почему он также проверяет частную пропретность. Как это исправить?

Ответ №1:

Freezed говорит о себе:

Генерация кода для неизменяемых классов с простым синтаксисом / API без ущерба для функций.

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

Вы можете исправить это, удалив частное состояние из своего класса.

Комментарии:

1. Но вы можете использовать copyWith функцию для создания новой копии с измененными общедоступными свойствами.