Данная фича будет включена по умолчанию в Dart 3.10 и предоставит нам возможность обращаться к конструкторам и статическим полям и метода классов, enum без указания их имени. Т.е. тип объекта, к которому проводится обращение будет выведен за счет скоупа его использования. Это позволит писать более компактный код:
Color color = .blue;
switch (color) {
case .blue:
print('blue');
case .red:
print('red');
case .green:
print('green');
}Column( crossAxisAlignment: .start, mainAxisSize: .min, children: widgets, )
Также в директорию accepted переместилась спецификация фичи "Private Named Parameters", которая решает проблему с приватными именами полей, позволяя инициализировать их через именованные аргументы конструктора класса. Ранее это было невозможно, так как Dart запрещал использовать имена параметров, начинающиеся с _ (нижнего подчеркивания) в публичных конструкторах c именованными аргументами. Но теперь все меняется!😄
Если раньше вам нужно было использовать список инициализации:
class House {
int? _windows;
int? _bedrooms;
int? _swimmingPools;
House({
int? windows,
int? bedrooms,
int? swimmingPools,
}) : _windows = windows,
_bedrooms = bedrooms,
_swimmingPools = swimmingPools;
}То теперь код конструктора сокращается до:
class House {
int? _windows;
int? _bedrooms;
int? _swimmingPools;
House({this._windows, this._bedrooms, this._swimmingPools});
}А с появлением первичного конструктора такое объявление класса сократится до следующей записи:
class House({
int? _windows,
int? _bedrooms,
int? _swimmingPools,
});p.s. Очень надеюсь, что релиз этой фичи не придется ждать пару лет и он порадует нас в следующем году🫠
Как вам новые фичи Dart?
- 👍 – О, да, детка!!!
- 👌 – Сомнительно, но Окей
- 👎 – Отстой!



class Tool { int _price; Tool({this._price}); // Private name here. } void cheapTool() => Tool(price: 1); // Called with public name. class Hammer extends Tool { Hammer({super.price}); // And thus call with public name here too. } void pricyHammer() => Hammer(price: 200);