Путь
Изучайте Dart
Бесплатный интерактивный онлайн-курс по Dart. Вы пишете код на Dart в каждом уроке — синтаксис, классы, async/await, futures и основы, нужные для Flutter, — с подсказками ИИ, когда асинхронность начинает путать, и бесплатным сертификатом по завершении.
17,492+ codders записались
- Для начинающих
Помощь ИИ при написании кода
Практические интерактивные уроки
Аудио-озвучка к каждому уроку
Тесты для проверки знаний
Бесплатный сертификат о прохождении
Программа
Раздел 1
Основы
Начать разделНачатьРазвернутьСвернутьСоздайте прочную основу с основными понятиями и базовыми навыкамиВведение в Dart
4 уроков224- 01Что такое Dart?Задача
- 02Функция mainКвиз
- 03Вывод на печатьЗадачаКвиз
- 04Комментарии в кодеКвиз
Переменные и основные типы данных
11 уроков1075- 01Что такое переменные?Квиз
- 02СтрокиЗадачаКвиз
- 03Целые числа (int)ЗадачаКвиз
- 04Вещественные числа (double)ЗадачаКвиз
- 05Булевы значения (bool)ЗадачаКвиз
- 06Вывод типов с 'var'ЗадачаКвиз
- 07Финальные переменныеЗадачаКвиз
- 08Константные переменныеЗадачаКвиз
- 09Соглашения об именованииЗадачаКвиз
- 10Основы null-безопасностиЗадачаКвиз
- 11Повторение - Объявление переменныхЗадача
Операторы. Часть 1
6 уроков638- 01Арифметические операторыЗадачаКвиз
- 02Целочисленное делениеЗадачаКвиз
- 03Оператор модуляЗадачаКвиз
- 04Инкремент и декрементЗадачаКвиз
- 05Сокращённые присваиванияЗадачаКвиз
- 06Итог - Простые вычисленияЗадача
Операторы, часть 2
6 уроков636- 01Операторы сравненияЗадачаКвиз
- 02Логический ANDЗадачаКвиз
- 03Логический ORЗадачаКвиз
- 04Логический NOTЗадачаКвиз
- 05Операторы проверки типаЗадачаКвиз
- 06Повторение - СравненияЗадача
Операторы, часть 3
3 уроков320- 01Оператор условной нулевостиЗадачаКвиз
- 02Доступ условной нулевостиЗадачаКвиз
- 03Условный операторЗадачаКвиз
Управление потоком - Принятие решений
6 уроков636- 01Оператор 'if'ЗадачаКвиз
- 02Оператор 'else'ЗадачаКвиз
- 03Оператор 'else if'ЗадачаКвиз
- 04Повторение - Простые решенияЗадача
- 05Вложенные операторы 'if'ЗадачаКвиз
- 06Оператор 'switch'ЗадачаКвиз
Работа со строками
5 уроков538- 01Конкатенация строкЗадачаКвиз
- 02Интерполяция строкЗадачаКвиз
- 03Многострочные строкиЗадачаКвиз
- 04Свойства строкЗадачаКвиз
- 05Основные методы строкЗадачаКвиз
Поток управления - Циклы
6 уроков637- 01Цикл 'for'ЗадачаКвиз
- 02Цикл 'while'ЗадачаКвиз
- 03Цикл 'do-while'ЗадачаКвиз
- 04Использование 'break' в циклахЗадачаКвиз
- 05Использование 'continue' в циклахЗадачаКвиз
- 06Итог - Повторение кодаЗадача
Коллекции - Основы списков
8 уроков759- 01Что такое списки?Квиз
- 02Создание спискаЗадачаКвиз
- 03Доступ по индексуЗадачаКвиз
- 04Получение длины спискаЗадачаКвиз
- 05Добавление элементовЗадачаКвиз
- 06Удаление элементовЗадачаКвиз
- 07Проверка, пуст ли списокЗадачаКвиз
- 08Итерация по спискуЗадачаКвиз
Коллекции - Основы словарей
8 уроков757- 01Что такое словари?Квиз
- 02Создание словаряЗадачаКвиз
- 03Доступ к значениям по ключуЗадачаКвиз
- 04Пары ключ-значениеЗадачаКвиз
- 05Получение размера словаряЗадачаКвиз
- 06Получение ключейЗадачаКвиз
- 07Получение значенийЗадачаКвиз
- 08Проверка существования ключаЗадачаКвиз
Основы функций
8 уроков753- 01Что такое функции?Квиз
- 02Определение простой функцииЗадачаКвиз
- 03Вызов функцииЗадачаКвиз
- 04Функции с параметрамиЗадачаКвиз
- 05Функции, возвращающие значенияЗадачаКвиз
- 06Ключевое слово 'void'ЗадачаКвиз
- 07Стрелочный синтаксисЗадачаКвиз
- 08Повторение - Простые функцииЗадача
Расширенные функции
5 уроков532- 01Необязательные позиционные параметрыЗадачаКвиз
- 02Именованные параметрыЗадачаКвиз
- 03Обязательные именованные параметрыЗадачаКвиз
- 04Значения параметров по умолчаниюЗадачаКвиз
- 05Повторение - Параметры функцийЗадача
Null-безопасность в деталях
6 уроков639- 01Понимание nullЗадачаКвиз
- 02Nullable-типыЗадачаКвиз
- 03Non-nullable-типыЗадачаКвиз
- 04Оператор утверждения nullЗадачаКвиз
- 05Поздняя инициализацияЗадачаКвиз
- 06Повторение - Безопасная обработка nullЗадача
Преобразование типов
4 уроков430- 01Преобразование String в intЗадачаКвиз
- 02Преобразование String в doubleЗадачаКвиз
- 03Преобразование чисел в StringЗадачаКвиз
- 04Обработка ошибок преобразованияЗадачаКвиз
Проект: Простой калькулятор
Проект5 уроков1- 01НастройкаЗадача
- 02Объявление числаПроект
- 03Создание операцииПроект
- 04Выполнение расчётаПроект
- 05Отображение результатаПроект
Вызовы по основам
3 уроков3- 01Вызов: Список вычисленийЗадача
- 02Вызов: Сумма чиселЗадача
- 03Вызов: Найти произведениеЗадача
Раздел 2
Логика и управление потоком
Начать разделНачатьРазвернутьСвернутьОсвойте продвинутое программирование на Dart с акцентом на структуры данных и управление потоком. Научитесь работать со сложными массивами, коллекциями, обработкой ошибок и управлением временем.Продвинутая работа со списками
9 уроков959- 01Свойства списка: first и lastЗадачаКвиз
- 02Состояние списка: isEmpty и isNotEmptyЗадачаКвиз
- 03Разворот спискаЗадачаКвиз
- 04Добавление в список: insertЗадачаКвиз
- 05Удаление из списка: removeWhereЗадачаКвиз
- 06Поиск в списке: indexOfЗадачаКвиз
- 07Сортировка спискаЗадачаКвиз
- 08Перемешивание спискаЗадачаКвиз
- 09Итоги — Органайзер списковЗадача
Функциональные операции со списками
7 уроков746- 01Преобразование с помощью 'map'ЗадачаКвиз
- 02Фильтрация с помощью 'where'ЗадачаКвиз
- 03Использование '.toList()'ЗадачаКвиз
- 04Проверка условий с помощью 'any'ЗадачаКвиз
- 05Условия с 'every'ЗадачаКвиз
- 06Поиск с помощью 'firstWhere'ЗадачаКвиз
- 07Повторение — фильтрация данныхЗадача
Множества
9 уроков864- 01Что такое множество?Квиз
- 02Создание множестваЗадачаКвиз
- 03Добавление и удаление элементовЗадачаКвиз
- 04Проверка наличия элементов в множествеЗадачаКвиз
- 05Преобразование списка в множествоЗадачаКвиз
- 06Объединение множествЗадачаКвиз
- 07Пересечение множествЗадачаКвиз
- 08Разность множествЗадачаКвиз
- 09Итоги: уникальный список гостейЗадача
Продвинутая работа с Map
7 уроков745- 01Итерация по MapЗадачаКвиз
- 02Проверка ключей и значенийЗадачаКвиз
- 03Свойства Map: keys и valuesЗадачаКвиз
- 04Условное добавление: putIfAbsentЗадачаКвиз
- 05Удаление записей из MapЗадачаКвиз
- 06Вложенные MapЗадачаКвиз
- 07Итоги — Обновление инвентаряЗадача
Проект: Калькулятор корзины
Проект5 уроков1- 01Настройка проектаЗадача
- 02Добавление товаров в корзинуПроект
- 03Расчет общей стоимостиПроект
- 04Применение скидкиПроект
- 05Отображение итогового чекаПроект
Основы обработки ошибок
6 уроков541- 01Что такое исключения?Квиз
- 02Блок 'try-catch'ЗадачаКвиз
- 03Перехват исключений с помощью 'on'ЗадачаКвиз
- 04Блок 'finally'ЗадачаКвиз
- 05Генерация исключенияЗадачаКвиз
- 06Итоги: Безопасное делениеЗадача
Продвинутые функции
7 уроков646- 01Анонимные функцииЗадачаКвиз
- 02Передача функций в качестве аргументовЗадачаКвиз
- 03Понимание замыканийЗадачаКвиз
- 04Введение в рекурсиюКвиз
- 05Рекурсивная функция: обратный отсчётЗадачаКвиз
- 06Рекурсивная функция: факториалЗадачаКвиз
- 07Итоги — Обработчик списковЗадача
Проект: Простой анализатор текста
Проект7 уроков18- 01Обзор проекта и настройкаЗадачаКвиз
- 02Подсчет символовПроект
- 03Разбиение текста на словаПроект
- 04Подсчет словПроект
- 05Подсчет уникальных словПроект
- 06Подсчет частоты словПроект
- 07Вывод результатов анализаПроект
Перечисления (Enums)
5 уроков433- 01Что такое Enums?Квиз
- 02Определение простого EnumЗадачаКвиз
- 03Использование Enums в переменныхЗадачаКвиз
- 04Enums в операторах 'switch'ЗадачаКвиз
- 05Итоги — СветофорЗадача
Финальные испытания
3 уроков3- 01Испытание: Сортировщик оценокЗадача
- 02Испытание: Счетчик гласныхЗадача
- 03Испытание: FizzBuzzЗадача
Раздел 3
Объектно-ориентированное программирование
Начать разделНачатьРазвернутьСвернутьУзнайте, как организовывать код с помощью классов, объектов и переиспользуемых структурОсновы ООП
9 уроков971- 01Внешние файлыЗадачаКвиз
- 02Библиотеки и импортЗадачаКвиз
- 03Введение в ООПЗадачаКвиз
- 04Классы и объектыЗадачаКвиз
- 05Ключевое слово thisЗадачаКвиз
- 06МетодыЗадачаКвиз
- 07Переменные экземпляраЗадачаКвиз
- 08Основы конструкторовЗадачаКвиз
- 09Итоги — Простой калькуляторЗадача
Конструкторы в Dart
7 уроков753- 01Конструктор по умолчаниюЗадачаКвиз
- 02Именованные конструкторыЗадачаКвиз
- 03Списки инициализацииЗадачаКвиз
- 04Константные конструкторыЗадачаКвиз
- 05Фабричные конструкторыЗадачаКвиз
- 06Перенаправляющие конструкторыЗадачаКвиз
- 07Итоги — Shape BuilderЗадача
Свойства классов
6 уроков644- 01Члены экземпляра и статические членыЗадачаКвиз
- 02Поля Final и ConstЗадачаКвиз
- 03Переменные LateЗадачаКвиз
- 04Статические методы и поляЗадачаКвиз
- 05Геттеры и сеттерыЗадачаКвиз
- 06Итоги — Менеджер банковского счетаЗадача
Null-безопасность
7 уроков754- 01Введение в Null-безопасностьЗадачаКвиз
- 02Nullable и Non-Nullable типыЗадачаКвиз
- 03Операторы ? и !ЗадачаКвиз
- 04Ключевое слово Late и Null-безопасностьЗадачаКвиз
- 05Null-aware операторыЗадачаКвиз
- 06Null-безопасность в классахЗадачаКвиз
- 07Итоги — Система профилей пользователейЗадача
Инкапсуляция
6 уроков641- 01Публичные и приватные членыЗадачаКвиз
- 02Соглашение о префиксе _ЗадачаКвиз
- 03Приватность на уровне библиотекЗадачаКвиз
- 04Геттеры и сеттеры: подробный разборЗадачаКвиз
- 05Скрытие данныхЗадачаКвиз
- 06Итоги — Записи о студентахЗадача
Наследование
7 уроков750- 01Основы наследованияЗадачаКвиз
- 02Ключевое слово superЗадачаКвиз
- 03Переопределение методовЗадачаКвиз
- 04Аннотация @overrideЗадачаКвиз
- 05Ключевое слово final для классовЗадачаКвиз
- 06Конструкторы и наследованиеЗадачаКвиз
- 07Итоги: Иерархия сотрудниковЗадача
Абстрактные классы и интерфейсы
7 уроков753- 01Абстрактные классыЗадачаКвиз
- 02Абстрактные методыЗадачаКвиз
- 03Интерфейсы в DartЗадачаКвиз
- 04Неявные интерфейсыЗадачаКвиз
- 05Реализация против наследованияЗадачаКвиз
- 06Множественные интерфейсыЗадачаКвиз
- 07Итоги — Калькулятор фигурЗадача
Mixins
7 уроков752- 01Введение в MixinsЗадачаКвиз
- 02Создание MixinsЗадачаКвиз
- 03Использование нескольких MixinsЗадачаКвиз
- 04Ключевое слово on в MixinsЗадачаКвиз
- 05Mixin и наследованиеЗадачаКвиз
- 06Mixin и интерфейсЗадачаКвиз
- 07Итоги: Система животныхЗадача
Полиморфизм
6 уроков643- 01Основы полиморфизмаЗадачаКвиз
- 02Полиморфизм через интерфейсыЗадачаКвиз
- 03Проверка типов во время выполненияЗадачаКвиз
- 04Операторы is и asЗадачаКвиз
- 05Ключевое слово covariantЗадачаКвиз
- 06Итоги — Обработчик платежейЗадача
Коллекции и обобщения
7 уроков754- 01Обзор List, Set, MapЗадачаКвиз
- 02Типобезопасные коллекцииЗадачаКвиз
- 03Обобщенные классыЗадачаКвиз
- 04Обобщенные методыЗадачаКвиз
- 05Ограничения обобщенийЗадачаКвиз
- 06Iterable и IteratorЗадачаКвиз
- 07Итоги: Обобщенное хранилищеЗадача
Специальные методы
6 уроков643- 01Переопределение toString()ЗадачаКвиз
- 02Переопределение hashCode и ==ЗадачаКвиз
- 03Интерфейс ComparableЗадачаКвиз
- 04Метод call()ЗадачаКвиз
- 05Переопределение noSuchMethodЗадачаКвиз
- 06Повторение — Пользовательская коллекцияЗадача
Асинхронное ООП
6 уроков645- 01Futures и async/awaitЗадачаКвиз
- 02Основы StreamsЗадачаКвиз
- 03Контроллеры StreamЗадачаКвиз
- 04Асинхронные конструкторыЗадачаКвиз
- 05Асинхронность в методах классовЗадачаКвиз
- 06Итоги — Data FetcherЗадача
Продвинутые концепции ООП
7 уроков764- 01Композиция против наследованияЗадачаКвиз
- 02Методы расширенияЗадачаКвиз
- 03Вызываемые классыЗадачаКвиз
- 04Запечатанные классы (Dart 3)ЗадачаКвиз
- 05Записи (Dart 3)ЗадачаКвиз
- 06Паттерны и сопоставление (3.0)ЗадачаКвиз
- 07Перечисления с методамиЗадачаКвиз
Паттерны проектирования. Часть 1
5 уроков543- 01Введение в паттерны проектированияЗадачаКвиз
- 02Паттерн SingletonЗадачаКвиз
- 03Паттерн FactoryЗадачаКвиз
- 04Паттерн ObserverЗадачаКвиз
- 05Паттерн StrategyЗадачаКвиз
Паттерны проектирования. Часть 2
7 уроков763- 01Паттерн КомандаЗадачаКвиз
- 02Паттерн АдаптерЗадачаКвиз
- 03Паттерн ДекораторЗадачаКвиз
- 04Паттерн Шаблонный методЗадачаКвиз
- 05Паттерн СостояниеЗадачаКвиз
- 06Паттерн КомпоновщикЗадачаКвиз
- 07Паттерн РепозиторийЗадачаКвиз
Проект: Управление библиотекой
Проект6 уроков1- 01Обзор проектаЗадача
- 02Классы Book и UserПроект
- 03Система выдачи книгПроект
- 04Функционал поискаПроект
- 05Интерфейс администратораПроект
- 06Тестирование и интеграцияПроект
Финальные испытания
4 уроков4- 01Платформа онлайн-обученияЗадача
- 02Банковская системаЗадача
- 03Система игровых персонажейЗадача
- 04Сервис аренды транспортаЗадача
Почему стоит изучать Dart на Coddy
- Пишите и запускайте настоящий Dart-код прямо в браузере. Никакой установки Dart SDK, никакой настройки Flutter-окружения. Каждый урок компилирует вашу программу на сервере и сразу показывает результат.
- Dart таким, каким его реально используют Flutter-разработчики: переменные и типы, поток управления, функции, классы и наследование, generics, null-safety, futures, async/await, streams. Те основы Dart, которые нужны каждому Flutter-разработчику.
- Подсказки ИИ помогают разбираться с ошибками Dart и асинхронными багами, не выдавая готовый ответ, — так концепции вроде null-safety и futures начинают щёлкать, а не сбивать с толку.
- Бесплатный сертификат по Dart после прохождения курса. Весомое подтверждение навыков для вакансий, где Dart — основной язык: Flutter и мобильная разработка.
Частые вопросы об изучении Dart
Для чего используется Dart?
Dart в основном используют для разработки приложений на Flutter — это кроссплатформенный UI-фреймворк от Google, с которым из одной кодовой базы можно собирать приложения под iOS, Android, web, Windows, macOS и Linux. Помимо Flutter, на Dart также пишут утилиты командной строки и серверный код, но главная причина, по которой сегодня учат Dart, — это именно Flutter.
Сложно ли выучить Dart?
Dart — один из самых простых для освоения статически типизированных языков. Синтаксис знаком всем, кто видел Java, JavaScript или C#, а строгая null-safety защищает от распространённых ошибок. Большинство новичков пишут свою первую рабочую программу на Dart уже в первый час, а через неделю начинают писать классы.
Стоит ли учить Dart перед Flutter?
Да — хотя бы основы. Дальше во Flutter вы продвинетесь гораздо быстрее, когда синтаксис Dart, классы, async/await и null-safety станут привычными. Курс по Dart как раз и задуман как трамплин к Flutter, поэтому в нём разбираются те части Dart, которые реально встречаются в коде на Flutter.
Сколько времени нужно, чтобы выучить Dart?
Основы Dart — переменные, поток управления, функции, классы — занимают одну-две недели ежедневной практики. Чтобы освоиться с async/await, futures и null-safety, обычно нужно ещё две-четыре недели. Дальше можно переходить к Flutter, попутно подбирая более продвинутые возможности Dart по мере необходимости.
Можно ли изучать Dart онлайн бесплатно?
Да. Интерактивный курс по Dart бесплатный — уроки, задания на код, квизы и сертификат. Dart компилируется на сервере, так что не нужно ставить Dart SDK и поднимать Flutter локально, чтобы начать писать настоящий код на Dart.
Выдают ли сертификат после курса Dart?
Да. После прохождения курса по Dart вы получаете бесплатный сертификат. Это проверяемое подтверждение, которое можно добавить в резюме или опубликовать в LinkedIn — особенно полезно как ступенька к разработке на Flutter.