В текущем коде не может быть конструктора const
, так как некоторые из переменных-членов в классе не помечены как final
.
Конструктор const
предназначен для создания нескольких экземпляров одного и того же класса с теми же аргументами во время компиляции (поэтому все параметры могут быть определены компилятором и не зависят от времени выполнения), он будет использовать один и тот же экземпляр в памяти. Это разрешено только потому, что все переменные-члены - final
.
. Таким образом, преимущества заключаются в возможном улучшении производительности и памяти в определенных c случаях (например, в некоторых классах в dart:convert
). Но вы должны вызвать конструктор const
, например const MyClass();
, чтобы получить такое поведение const
. В противном случае, const
можно использовать как обычный конструктор для получения обычного экземпляра класса.
Лично я скажу, что если у вас есть класс только с final
переменными, которые указывают на другие объекты const
, действительно нет причин не создавать конструктор const
, даже если он никогда не будет использоваться. Но часто вы сможете сделать это только для простых классов данных.
Но также совершенно нормально не создавать конструктор const
.