Синтаксис и пунктуация в Dart
Названия знаков по-английски и по-русски: Знаки препинания и символы в IT.
О чём эта статья
Dart выглядит как Java или C#, но есть свои привычки: точка с запятой в конце строки не обязательна, строки в "...", многострочные литералы ''' ... ''', стрелка => для коротких функций и trailing comma в списках аргументов (удобно в Flutter). Здесь — знаки препинания и мелкие правила, из‑за которых чаще всего "не компилируется".
Дальше: типы и null safety → управление.
Общие принципы
- Блоки кода — в фигурных скобках
{ }. - Имена:
lowerCamelCaseдля переменных и методов,UpperCamelCaseдля типов. - Файлы:
snake_case.dart. - Официальный стиль — Effective Dart; в проекте часто подключают
dart formatи анализаторdart analyze.
Кавычки и строки
Двойные кавычки "
Основной способ задать String. Интерполяция: "Привет, $name" или "Сумма: ${a + b}".
final name = 'Dart';
print("Hello, $name");
Разбор:
finalфиксирует ссылку на значение:nameнельзя переназначить на другую строку.$nameвнутри двойных кавычек — интерполяция, подстановка значения переменной в текст.print(...)выводит готовую строку в консоль, что удобно для простых проверок в CLI.
Одинарные кавычки '
Тоже строка; удобно, когда внутри много ":
print('Он сказал: "привет"');
Разбор:
- Внешние одинарные кавычки позволяют использовать двойные внутри без экранирования.
- Этот стиль уменьшает визуальный шум и делает строку легче для чтения.
- Подход полезен в текстах с цитатами или JSON-фрагментами.
Тройные кавычки ''' / """
Многострочный текст без \n:
final text = '''
Строка 1
Строка 2
''';
Разбор:
- Тройные кавычки создают многострочный литерал
Stringв "нативном" виде. - Переносы строк сохраняются автоматически, без ручного добавления
\n. - Такие строки удобны для шаблонов сообщений, SQL, markdown и тестовых данных.
Raw-строки r"..."
Обратный слэш не экранирует: r"C:\Users\name".
Точка с запятой
В Dart 3 ; в конце строки опциональна, если парсер однозначно понимает границу оператора. В команде обычно всё равно придерживаются одного стиля в файле — dart format расставит согласованно.
void main() {
print('ok') // без ; — допустимо
}
Разбор:
main()— стартовая функция, с которой начинается выполнение программы.- Пример демонстрирует, что в этом контексте Dart допускает отсутствие
;. - На практике единый стиль обычно обеспечивает
dart format, чтобы код в проекте выглядел одинаково.
Фигурные скобки и тело функции
int add(int a, int b) {
return a + b;
}
// Одно выражение — стрелка =>
int double(int x) => x * 2;
Разбор:
addиспользует классическую форму функции: блок{}и явныйreturn.- Типы
intу параметров и результата задают строгий контракт функции. doubleв примере — имя функции; она возвращаетint.- Стрелочная запись
=>сокращает код для функций из одного выражения.
У классов методы и поля тоже в { }; улучшенные enum и switch expression используют те же скобки — см. паттерны Dart 3.
Запятая в конце (trailing comma)
После последнего аргумента или элемента списка запятую можно оставить — форматтер разнесёт аргументы по строкам (важно для виджетов Flutter):
Widget build(BuildContext context) {
return Column(
children: [
Text('A'),
Text('B'),
], // trailing comma
);
}
Разбор:
build(BuildContext context)— стандартный метод Flutter, возвращающий описание UI.Columnстроит вертикальный контейнер, аchildrenхранит дочерние виджеты.- Элементы
Text('A')иText('B')показывают простой список текстовых узлов. - Trailing comma после последнего элемента помогает форматтеру и делает git-diff чище при добавлении новых строк.
Комментарии
// однострочный
/* блочный
на несколько строк */
/// документация к классу или функции (для dart doc)
Разбор:
//подходит для коротких локальных комментариев./* ... */используют для многострочных пояснений внутри кода.///— формат документации API, который читается инструментомdart doc.- Для публичных классов и методов именно
///помогает поддерживать качественную встроенную документацию.
Операторы, которые часто путают
| Оператор | Назначение |
|---|---|
?? | Значение по умолчанию, если слева null |
??= | Присвоить, только если переменная null |
?. | Вызов только если не null |
! | Утверждение "здесь точно не null" (осторожно) |
~/ | Целочисленное деление |
.. | Каскад: несколько вызовов к одному объекту |
Подробнее о null safety — в типах.
Импорт и библиотеки
import 'dart:io'; // SDK
import 'package:http/http.dart' as http; // из pubspec
Разбор:
dart:io— стандартная библиотека для файловой системы, сети и процессов.package:http/http.dart— внешний пакет, подключаемый черезpubspec.yaml.as httpсоздаёт префикс и делает вызовы явными (http.get(...)), что снижает риск конфликтов имён.- Разделение импортов в отдельном блоке упрощает навигацию и поддержку файла.
Точка входа пакета — lib/, исполняемый консольный код — часто bin/ (первая программа).
Что запомнить
- Строки —
"или', интерполяция —$и${}. =>— короткая функция;{ }— полное тело.- Null-aware операторы — основа безопасного Dart 3.
- Стиль выравнивает
dart format— не спорьте с ним вручную по каждой запятой.
Следующий шаг: типы данных и null safety.