TGViewer
Юрий Петров | ai engineering Юрий Петров | ai engineering @mobile_developing · 1.57K subscribers
Post #913 1.14K

Forwarded from MADTeacher | Станислав Чернышев

Не сказать, что этот год был насыщенным в плане внедрения новых фич в Dart, но это не значит, что команда разработчиков расслабила свои батоны и ничего не делает😎 Поэтому решил подвести некоторую черту под тем функционалом этого языка программирования, который находится на стадии внедрения в Dart SDK и чья спецификация была закончена, т.е. фича готова к реализации🤓

Активно пилятся, но полноценный релиз стоит ждать скорей всего не раньше 2026, т.к. фичи зависят друг от друга 🫡:

👉 Макросы

👉Аугментация

👉
Расширенный механизм part of


Увидим в течении следующего года 👀:

👉 Wildcard variables (Dart 3.7)
- разруливает множественное использование символа нижнего подчеркивания (конфликт имен переменных), т.е. предложение позволяет использовать более одного подстановочного знака без конфликтов имен в callback-функциях и при объявлении переменных

👉 enum-shorthands (Dart 3.8/x ?) - за счет выводимого типа в левой части выражения или текущего скоупа, позволяет не использовать имя перечисления при обращении к его свойствам, а также имя класса при обращении к константным и фабричным (именованным и нет) конструкторам и статическим полям и методам
Padding(
padding: const .all(8.0), // const EdgeInsets.all(8.0) // constructor
child: ...
)

int x = .parse(input); // Static method.

const String option = .fromEnvironment("my_option"); // Constructor


👉 Null-aware elements (Dart 3.8/9/x ?) - предлагает более простой формат проверки на null, что позволит заменить
Stack(
fit: StackFit.expand,
children: [
const AbsorbPointer(),
if (widget.child != null) widget.child!,
],
)


на
Stack(
fit: StackFit.expand,
children: [
const AbsorbPointer(),
?widget.child,
],
)


Спецификация завершена и фича готова к началу внедрения в Dart SDK ‼️:

Здесь можно выделить одну фичу - Unquoted imports. Она вносит революцию в изменение в формат импортирования библиотек и пакетов:
// Before:
import 'dart:isolate';
import 'package:flutter_test/flutter_test.dart';
import 'package:path/path.dart';
import 'package:flutter/material.dart';
import 'package:analyzer/dart/ast/visitor/visitor.dart';
import 'package:widget.tla.server/server.dart';
import 'package:widget.tla.proto/client/component.dart';

// After:
import dart/isolate;
import flutter_test;
import path;
import flutter/material;
import analyzer/dart/ast/visitor/visitor;
import widget.tla.server;
import widget.tla.proto/client/component;
  • 🔥 9
More from @mobile_developing
  1. Sep 26, 2026Ну погнали ☺️
  2. Sep 24, 2026Я давно в мобильной разработке и быстро замечаю баги в приложениях. Причём не в каких-то п…
  3. Sep 23, 2026Благодарю ребят за такие тёплые слова, модули про Hugging Face добавлю, я думаю будет очен…
  4. Sep 23, 2026Вышла Claude Opus 5.5 Anthropic вчера выкатила Opus 5.5. При выходе новой модели обычно вс…
  5. Sep 21, 2026Сейчас все хайпуют на мозге мухи дрозофилы) Для тех, кто не в курсе: 3 сентября Google Res…
  6. Sep 17, 2026GitHub переписал рантайм Copilot с TypeScript на Rust руками агентов 832 тысячи строк прод…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →