Курс ведётся на русском языке: видео и материалы русскоязычные. Украинская версия курса появится позже.
Что вы сможете после курса
- Верстать экраны на виджетах Flutter: ряды, колонки, стеки, прокручиваемые списки и slivers — по макету Figma
- Работать с сетью и данными: запросы по HTTP, JSON-сериализация, файлы, Shared Preferences, Hive и SQLite
- Анимировать интерфейс: от implicit-виджетов и контроллеров до CustomPaint, Lottie и Rive
- Строить навигацию, диалоги и всплывающие окна — включая собственные переходы и маршруты с анимацией
- Управлять состоянием приложения через Provider, Bloc, Redux или MobX и внедрять зависимости через GetIt
- Находить джанки и утечки памяти профилировщиком и защищать код юнит-, виджет- и интеграционными тестами
Кому подойдёт курс
Начинающим в мобильной разработке
Курс стартует с основ языка Dart и устройства Flutter — без предположений, что вы уже писали мобильные приложения. Каждая тема закрепляется практикой, а сквозной проект растёт вместе с вашими навыками.
Разработчикам с опытом в другом стеке
Если вы уже программируете на другом языке, курс быстро выводит на прикладные темы: виджеты, сеть, хранение, архитектуры. Устройство фреймворка разбирается под капотом — от трёх деревьев до платформенных каналов.
Flutter-разработчикам для систематизации
Тем, кто уже трогал Flutter по документации: курс складывает разрозненные знания в систему. Четыре подхода к состоянию сравниваются на одном приложении, хранилища — живыми замерами, производительность — с профилировщиком в руках.
Не подойдёт тем, кто ищет серверную разработку, вёрстку веб-версий или подготовку к публикации в магазинах приложений — этих тем в программе нет.
Как проходит обучение
- Видеозанятия с живым кодингом — Каждый инструмент показывается в работе: код пишется и запускается прямо на занятии, включая разбор ошибок и их починку.
- Сквозной учебный проект — Приложение с каталогом коктейлей развивается от модуля к модулю: экраны, сеть, хранилище, состояние, анимации и тесты — на одном примере.
- Домашние задания с ревью — Задания сдаются через Git-репозиторий и pull request — вы привыкаете к рабочему процессу командной разработки.
- Сравнение подходов на одном примере — Четыре архитектуры состояния и четыре хранилища применяются к одному приложению с замерами — выбор технологии перестаёт быть гаданием.
- Разбор реальных проблем — Джанки, утечки памяти, ошибки с контекстами и конфликтами жестов чинятся прямо на занятиях — вы видите процесс отладки, а не только готовый результат.
Что понадобится
- Компьютер с установленными Flutter SDK и Dart SDK — работают на Windows, macOS и Linux
- Android Studio или Visual Studio Code с эмулятором Android либо симулятором iOS
- Аккаунт GitHub для сдачи домашних заданий через репозиторий
Почему самому обычно не выходит
Документация Flutter огромна, а выбор решений неочевиден: сотни виджетов в каталоге, четыре основных подхода к управлению состоянием, несколько хранилищ с разными характеристиками. Без системы это выливается в типовой сценарий: экран по туториалу собирается, но при первом нестандартном случае — анимация, сохранение данных, сложный список — проект превращается в клубок компромиссов.
Курс выстраивает путь от языка к готовому приложению и показывает устройство фреймворка под капотом: три дерева, event loop, изоляты. Типовые проблемы — джанки, утечки памяти, конфликты жестов, ошибки с контекстами — разбираются с профилировщиком, поэтому отладка перестаёт быть блужданием вслепую.
Что изменится
До курса
- Собираете интерфейс по чужим примерам, не понимая, почему список тормозит, а виджет перерисовывается целиком
- Асинхронный код используется наугад, а тяжёлая операция подвешивает экран
- Состояние приложения живёт в setState и прокидывается через конструкторы
- Анимации копируются из статей, а выбор между Lottie, Rive и кодом — лотерея
- О качестве приложения судите на глаз: тормозит — значит тормозит
После курса
- Читаете интерфейс как систему: знаете три дерева Flutter, ключи и жизненный цикл — и управляете перестроением осознанно
- Пишете асинхронность как рабочий инструмент: event loop, изоляты и потоки данных без сюрпризов
- Выносите состояние в Provider, Bloc, Redux или MobX по ситуации и внедряете зависимости через GetIt
- Делаете анимацию под задачу: от implicit-виджетов до CustomPaint и собственного маршрута с анимацией
- Профилируете UI и память, убираете джанки и защищаете код юнит-, виджет- и интеграционными тестами
Как устроен путь
- Язык и фундамент Основы Dart: типы, функции, пакеты, асинхронность, потоки и изоляты — инструмент, на котором держится весь фреймворк.
- Виджеты и интерфейс Модель виджетов, вёрстка экранов, списки и slivers, жесты, формы, навигация и диалоги — каждый приём закрепляется на экранах приложения.
- Анимации и данные От implicit-виджетов до CustomPaint, Lottie и Rive; сеть, JSON и четыре хранилища с замерами скорости на реальных объёмах.
- Архитектура и качество Provider, Bloc, Redux и MobX на одном приложении, связь с нативным кодом, профилирование до стабильной частоты кадров и блок тестирования.
Программа курса
22 урока · 22 модуля · 42 часа 36 минут видео · Каждый раздел — отдельная тема с живым кодингом и практикой на сквозном приложении.
-
-
История и текущее состояние Dart, устройство SDK и встроенных пакетов, пакетный менеджер Pub, pubspec и консольные инструменты — фундамент всей работы с Flutter.
- Dart: SDK и инструменты2:37:04
Вводный урок по Dart: история языка и его текущее состояние, устройство Dart SDK и способы исполнения кода — от запуска на виртуальной машине до компиляции в JavaScript и нативные исполняемые файлы. Разбираются пакетный менеджер Pub с файлом pubspec.yaml и каталогом pub.dev, соглашения о структуре пакета, приватность через подчёркивание, именованные и фабричные конструкторы, а также консольные инструменты: pub get, статический анализ с правилами Dart Linter и Обсерватория. В задании — разобраться в устройстве SDK и по желанию собрать собственный пакет с экспортом файлов и подключить его в приложении Flutter.
- Dart: SDK и инструменты2:37:04
-
Как устроен Flutter изнутри: stateless- и stateful-виджеты, жизненный цикл состояния, InheritedWidget, ключи и три дерева — виджетов, элементов и рендера.
- Flutter: устройство и виджеты2:34:52
Разбирается модель виджетов Flutter: stateless- и stateful-компоненты, жизненный цикл состояния с setState, initState и dispose, передача данных через InheritedWidget и ключи ObjectKey, ValueKey, GlobalKey. Затем рассматривается устройство движка — трёхслойная архитектура, рендеринг через Skia и три дерева: виджетов, элементов и рендер-объектов. В итоге вы сможете создавать собственные виджеты, управлять состоянием через setState и понимать путь конфигурации от метода build до отрисовки движком.
- Flutter: устройство и виджеты2:34:52
-
Категории виджетов, текст и картинки, контейнер с декорациями, ряды и колонки, перенос и наложение; практика — карточка коктейля по макету Figma.
- Категории виджетов и вёрстка экрана2:11:21
Урок систематизирует виджеты по трём категориям — видимые, с одним дочерним и с несколькими — и учит собирать экран: стили текста и RichText, подключение картинок из сети и ассетов, MediaQuery, контейнер с цветом и декорациями, обрезку семейством Clip, ряды и колонки на основе Flex, перенос через Wrap и наложение слоёв через Stack. Отдельно разбирается, как ограничения от родителя определяют размер и положение виджета. В практике учащийся верстает по макету Figma карточку коктейля и сдаёт результат ссылкой на репозиторий.
- Категории виджетов и вёрстка экрана2:11:21
-
Дженерики и extension-методы, event loop и Future, async/await, запросы по HTTP и три подхода к JSON-сериализации — ручной, json_serializable и built_value.
- Dart: асинхронность и сеть3:04:30
Урок закрывает пробелы языка перед сетевой частью: дженерики с ограничениями, extension-методы, устройство event loop, состояния Future и работу с Completer, синтаксис async/await. Дальше — HTTP-запросы через пакет http с проверкой кода статуса, декодирование jsonDecode и три подхода к JSON-сериализации моделей: вручную, json_serializable и built_value. В задании — асинхронный метод репозитория с запросом к открытому API, классом DTO и выбранной сериализацией, сдача ссылкой на GitHub-репозиторий.
- Dart: асинхронность и сеть3:04:30
-
От SingleChildScrollView до ListView, GridView и PageView, управление позицией через ScrollController и сложные экраны на CustomScrollView со слайверами.
- Прокручиваемые виджеты и slivers во Flutter1:40:50
Разбирается иерархия прокручиваемых виджетов Flutter: обёртка одного элемента SingleChildScrollView, ленивые списки ListView с builder и разделителями, двумерные сетки GridView и постраничный PageView с контроллерами. Отдельное внимание — управлению позицией через ScrollController, удержанию элементов за экраном через keep-alive и выбору физики прокрутки. В конце показано, как собирать сложные экраны из слайверов внутри CustomScrollView, включая заголовок с закреплением и всплытием.
- Прокручиваемые виджеты и slivers во Flutter1:40:50
-
Stream, контроллеры и подписки, broadcast-стримы, обработка ошибок, трансформации потоков и ленивые генераторы на sync* и async*.
- Потоки данных и генераторы в Dart1:51:36
Урок о потоках данных в Dart: устройство Stream, работа со StreamController и подписками — listen, пауза, отмена, обработка ошибок, одиночные и broadcast-стримы, буферизация и место потоков в событийном цикле. Разбираются трансформации потоков (map, where, skip/take, StreamTransformer, конвейер чтения файла) и ленивые генераторы на sync* и async*. В результате слушатель пишет код на потоках: передаёт данные порциями, не блокируя интерфейс, управляет подписками, применяет трансформации и генераторы.
- Потоки данных и генераторы в Dart1:51:36
-
Как Flutter сопоставляет виджеты и элементы: локальные и глобальные ключи, доступ к состоянию и геометрии, Builder, FutureBuilder, StreamBuilder и LayoutBuilder.
- Ключи виджетов и билдеры во Flutter1:27:28
Разбираем, как Flutter сопоставляет виджеты, элементы и render-объекты, и зачем при перестановке виджетов нужны ключи: LocalKey, ValueKey, UniqueKey, ObjectKey и GlobalKey — от сохранения состояния до доступа к состоянию, контексту и геометрии элемента. Затем переходим к билдерам — Builder, FutureBuilder, StreamBuilder, LayoutBuilder, ValueListenableBuilder: строим интерфейс по асинхронному снимку и ограничениям родителя. В домашнем задании собирается экран поиска коктейлей с GridView через CustomScrollView и тремя состояниями отображения.
- Ключи виджетов и билдеры во Flutter1:27:28
-
GestureDetector и арена жестов, собственные рекогнайзеры, чекбоксы и переключатели, текстовые поля с фильтрацией ввода и валидацией форм.
- Жесты и виджеты ввода данных1:48:21
Разбирается обработка жестов во Flutter: уровни работы с касаниями от Listener до GestureDetector с готовыми рекогнайзерами (нажатия, двойной тап, long press, drag, pan, scale) и RawGestureDetector со своими, а также разрешение конкуренции жестов через Gesture Arena. Вторая часть — виджеты ввода: Checkbox, Switch, Radio и TextField с контроллером, декорацией, фильтрацией ввода через inputFormatters и управлением фокусом через FocusNode. В практике нужно обернуть виджеты в GestureDetector для реакции на жесты и собрать форму из полей с валидацией через Form и TextFormField.
- Жесты и виджеты ввода данных1:48:21
-
Изоляты Dart: spawn и kill, обмен сообщениями через порты, compute, ограничения на передачу данных и профилирование памяти в Observatory.
- Изоляты в Dart: параллельное выполнение1:53:55
Разбираем изоляты Dart: независимые воркеры со своей памятью и event loop, их запуск через Isolate.spawn и завершение через kill, обмен сообщениями через ReceivePort и SendPort, обёртки StreamChannel и compute. Отдельно — ограничения на типы передаваемых данных, TransferableTypedData для больших объёмов байтов и цена изолятов. В практике выносим тяжёлые вычисления и HTTP-запросы из UI-потока, чтобы кадры укладывались в бюджет и анимация не подвисала, и профилируем память в Observatory.
- Изоляты в Dart: параллельное выполнение1:53:55
-
Планирование кадров и ticker, implicit-виджеты семейства Animated, интерполяция через Tween и TweenAnimationBuilder, кривые — готовые и собственные.
- Анимация во Flutter: implicit-виджеты и твины1:26:12
Разбирается механика анимации во Flutter: планирование кадров, Ticker и VSync, implicit-виджеты с префиксом Animated — от AnimatedOpacity и AnimatedContainer до AnimatedSwitcher и AnimatedPositioned. Показана интерполяция значений через Tween и TweenAnimationBuilder, а кривые Curves, включая собственную кривую на синусе, задают движению физичный характер. В итоге можно анимировать свойства виджетов семейством Animated и TweenAnimationBuilder и понимать границу между неявными анимациями и анимациями с контроллером.
- Анимация во Flutter: implicit-виджеты и твины1:26:12
-
-
-
AnimationController с тикером и vsync, transition-виджеты, AnimatedBuilder и AnimatedWidget, твины и последовательности трансформаций.
- Explicit-анимации: контроллеры и твины1:41:14
Урок вводит явные анимации Flutter: AnimationController с тикером и vsync, методами forward, reverse, repeat и обязательным освобождением в dispose, а также класс Animation со статусами dismissed, completed, forward, reverse. Разбирается построение управляемых извне анимаций из transition-виджетов, AnimatedBuilder и AnimatedWidget, подключение кривых через CurvedAnimation и создание кастомных твинов с lerp и TweenSequence. Отдельно даны критерии выбора: анимация явная, если она повторяется, прерывается или зависит от другой.
- Explicit-анимации: контроллеры и твины1:41:14
-
Рисование через CustomPaint и ClipPath на движке Skia, анимированный прелоадер своими руками, ассеты Lottie и Rive с управлением из кода.
- Кастомная графика, Lottie и Rive1:51:35
Рисуем низкоуровневой графикой на движке Skia: CustomPaint и CustomPainter с кистями и Path, кривые Безье, обрезка содержимого через ClipPath — на этом строится анимированный прелоадер, управляемый значением контроллера и встраиваемый в приложение коктейлей. Затем подключаем сторонние движки: Lottie-анимации из After Effects, которые можно грузить из ассета, сети или памяти и рисовать покадрово через CustomPainter, и Rive с виджетом FlareActor и управлением прогрессом через FlareController. В результате человек рисует произвольные фигуры путями и кистями, анимирует прелоадер и подключает готовые Lottie и Rive-ассеты; домашнее задание — кнопка избранного на CustomPaint.
- Кастомная графика, Lottie и Rive1:51:35
-
Overlay и Navigator, именованные маршруты, передача данных в обе стороны, собственные переходы, вложенная навигация, наблюдатели и Hero-анимации.
- Навигация: стек маршрутов и Hero1:39:03
Разбирается устройство навигации Flutter: Overlay как фундамент и стековый Navigator с анонимными и именованными маршрутами, методами push, pop, replace и pushNamed. Показаны способы передачи данных между экранами в обе стороны, собственные переходы через PageRouteBuilder, вложенная навигация на табах, NavigatorObserver для отслеживания событий и Hero-анимация с тегами. В итоге человек умеет открывать и закрывать экраны, передавать аргументы и получать результат, настраивать переходы, вложенную навигацию, наблюдателей и Hero; часть приёмов закрепляется заданиями на DartPad.
- Навигация: стек маршрутов и Hero1:39:03
-
Готовые окна и пикеры Material и Купертино, модальные и постоянные нижние шиты, всплывающие меню и кастомизация — вплоть до собственного маршрута с анимацией.
- Диалоги и всплывающие окна во Flutter1:36:35
Разбираем диалоговые инструменты Flutter: готовые окна и пикеры Material и Cupertino, модальные и постоянные нижние шиты, всплывающие меню — и то, как за ними устроена работа навигатора со стеком маршрутов. Учит кастомизировать появление окна — анимацию перехода, затемнение фона, закрытие свайпом — вплоть до собственного всплывающего маршрута. В результате вы сможете выбирать подходящий диалоговый инструмент под задачу и возвращать результат выбора в код через будущие значения.
- Диалоги и всплывающие окна во Flutter1:36:35
-
Файл, Shared Preferences, Hive и SQLite в живой практике: сравнение по скорости на реальных объёмах и вывод — какие данные какому хранилищу подходят.
- Локальное хранение: файл, Shared Preferences, Hive, SQLite1:59:00
Практикум по локальному сохранению данных во Flutter: инструменты файл, Shared Preferences, Hive и SQLite реализуются вживую в проекте и сравниваются по инициализации, работе с ключом и значением, коллекциям, поиску и скорости. Разбираются каталоги устройства через path_provider, синхронное и асинхронное чтение файлов, боксы и TypeAdapter в Hive, транзакции и запросы с условием в SQLite, а также Flutter Secure Storage для чувствительных данных. В задании дописываются оставшиеся методы заготовки — обновление и удаление для файлового репозитория, остальные операции Hive и полная таблица с преобразователем для SQLite, — в итоге становится ясно, какое хранилище подходит каким данным.
- Локальное хранение: файл, Shared Preferences, Hive, SQLite1:59:00
-
Временное состояние и состояние приложения, библиотека Provider, view-модели на ChangeNotifier и внедрение зависимостей через GetIt и Injectable.
- Управление состоянием: Provider и внедрение зависимостей1:34:52
Урок разделяет временное состояние и состояние приложения и показывает, как управлять состоянием приложения через Provider, построенный на InheritedWidget, — от базового Provider и MultiProvider до ChangeNotifierProvider и ProxyProvider, с чтением данных через watch, read, select и Consumer. Отдельно разбирается внедрение зависимостей по принципу инверсии: GetIt как сервис-локатор вне дерева виджетов и Injectable с кодогенерацией по аннотациям. В задании состояние экрана выносится во view-модель на ChangeNotifier, а зависимости регистрируются в GetIt с аннотациями Injectable.
- Управление состоянием: Provider и внедрение зависимостей1:34:52
-
От самописного блока на потоках к flutter_bloc: Cubit, BlocProvider и BlocBuilder, отладка, debounce и сохранение состояния через HydratedCubit.
- Архитектура Bloc: события, состояния, Cubit1:23:59
Урок разбирает Bloc как потоковое разделение интерфейса и бизнес-логики: от самописной реализации на двух контроллерах к библиотеке flutter_bloc, кубиту и виджетам BlocProvider, BlocBuilder, BlocListener. На примере страницы коктейлей с фильтром категорий и избранным рассматриваются именование событий и состояний, иммутабельные коллекции, copyWith, отладка через onChange и onTransition, debounce с RxDart и связывание блоков между собой. В задании собирается страница коктейлей на Bloc и Cubit, а HydratedCubit сохраняет состояние между сеансами.
- Архитектура Bloc: события, состояния, Cubit1:23:59
-
Store, Action, Reducer и middleware на примерах счётчика и приложения с коктейлями; санки, отладка через Redux DevTools и сравнение с BLoC.
- Redux: стор, экшены и редюсеры1:42:30
Обзор подхода Redux для управления состоянием: зачем нужно предсказуемое изменение состояния, как устроен однонаправленный поток данных и какие роли играют Store, Action, Reducer и middleware при единственном иммутабельном состоянии приложения. На примерах счётчика и приложения с коктейлями разбираются связка StoreProvider, StoreConnector и StoreBuilder из Flutter Redux, санки (thunk) для асинхронных побочных эффектов, генерация boilerplate пакетом freezed и просмотр истории действий в Redux DevTools. В результате слушатель понимает, из каких компонентов состоит Redux, умеет оценивать применимость подхода для проектов разного масштаба и разбирать код приложений на Flutter Redux.
- Redux: стор, экшены и редюсеры1:42:30
-
Observable, Computed, Action и Reaction, виджет Observer, кодогенерация и практика стыковки сторов в масштабируемое приложение.
- MobX: реактивные сторы и Observer1:42:27
Обзор библиотеки MobX для реактивного управления состоянием: Observable, Computed, Action и Reaction, автоматические подписки через виджет Observer и связанная с ними кодогенерация. Разбираются пользовательские реакции autorun, reaction и when с ручным управлением через disposer, группировка и связывание сторов через агрегацию и Provider, а также правила безопасного изменения состояния. В практическом задании нужно починить приложение курсов валют, вернув пропущенную аннотацию action и виджет Observer, чтобы обновление данных перерисовывало интерфейс.
- MobX: реактивные сторы и Observer1:42:27
-
Платформенные каналы MethodChannel и EventChannel, кодеки, генератор Pigeon, вызовы C и C++ через Dart FFI и встраивание нативных view.
- Платформенные каналы и нативный код2:06:11
Урок разбирает связь Flutter с платформенным кодом: плагины, платформенные каналы трёх типов — BasicMessageChannel, MethodChannel и EventChannel — с кодеками, генератор Pigeon для сложных структур, вызов C и C++ через Dart FFI и встраивание нативных view виджетами UiKitView и AndroidView. Показано устройство каналов: binary messenger, передача примитивов, обязательный возврат результата или ошибки, вызовы из натива в Dart и поток событий как Dart-стрим. В задании — подключить или написать плагин системного диалога «поделиться» и реализовать экран избранного на Redux, BLoC или MobX с локальным хранилищем.
- Платформенные каналы и нативный код2:06:11
-
-
-
Что такое джанки и как их ищут: потоки UI и Raster, performance overlay, таймлайн и flame chart, разбор тяжёлых методов и утечек памяти.
- Анализ производительности Flutter-приложения2:15:01
Учит находить и устранять джанки: рендер разбирается по потокам UI и Raster, таймлайн и CPU-профайлер обсерватории и DevTools указывают на тяжёлые методы, собственные метки из dart:developer размечают синхронные и асинхронные участки, а профиль памяти выявляет утечки. В практике студент профилирует своё приложение: включает performance overlay, находит тяжёлые методы, выносит вычисления из build в отдельный изолят и проверяет результат по оверлею.
- Анализ производительности Flutter-приложения2:15:01
-
Юнит- и виджет-тесты, матчеры и файндеры, golden-тесты попиксельного сравнения, интеграционные прогоны и отчёт тест-ковереджа.
- Тесты: юниты, виджеты и покрытие2:27:12
Как защищать логику и интерфейс Flutter-приложения тестами: юнит-тесты с матчерами, группами, изоляцией через setup и моками на mockito; виджет-тесты через testWidgets, pump и файндеры; golden-тесты, сравнивающие рендер с эталонным PNG; интеграционные тесты на эмуляторе и сборка отчёта покрытия через flutter test –coverage. Отдельно — fake_async, который подменяет таймеры и фьючеры контролируемыми аналогами и делает тесты с задержками быстрыми. В задании — юнит-тесты метода fetchCocktailDetails (успешный сценарий и исключение через throws), виджет-тест кнопки favorites и отчёт покрытия.
- Тесты: юниты, виджеты и покрытие2:27:12
-
Частые вопросы
Здесь собраны ответы почти на все вопросы, которые задают перед покупкой. Нажмите на вопрос, чтобы раскрыть ответ.
Об этом курсе
-
Да. Курс начинается с основ языка: устройство SDK, типы, функции, пакетная модель, затем асинхронность, потоки и изоляты — и только после этого переходит к Flutter.
-
Курс сфокусирован на мобильных платформах Android и iOS: интерфейс собирается в эмуляторе Android или симуляторе iOS, а отдельный раздел разбирает связь Flutter с нативным кодом обеих платформ.
-
Четыре подхода на одном приложении: Provider, Bloc с Cubit, Redux и MobX. Один и тот же экран делается на разных подходах, поэтому их можно честно сравнить и выбрать под свой проект.
-
Каждая тема закрепляется живым кодингом на занятии и домашним заданием: задания сдаются через Git-репозиторий и pull request, как в командной разработке. Сквозной проект — приложение с каталогом коктейлей — растёт от модуля к модулю.
-
Качеству готового приложения: профилированию и устранению джанок и утечек памяти, тестам — юнит-, виджет-, golden- и интеграционным, а также работе с платформенным кодом Android и iOS через каналы и Dart FFI.
-
Компьютер с Flutter SDK и Dart SDK, Android Studio или Visual Studio Code, эмулятор Android либо симулятор iOS и аккаунт GitHub для сдачи домашних заданий. Всё программное обеспечение бесплатное.
Доступ и материалы
-
Сразу после оплаты, в ту же секунду и автоматически. Ждать подтверждения не нужно. Доступ приходит двумя путями сразу. Первый: на почту, указанную при оформлении заказа, приходит письмо со ссылкой на материалы. Второй: та же ссылка появляется в вашем аккаунте на сайте, в разделе «Загрузки», и остаётся там постоянно.
-
Все видео и дополнительные файлы лежат в облачном хранилище. Ссылка на него — в вашем аккаунте на сайте, раздел «Загрузки», и в письме, которое пришло после оплаты. Аккаунт здесь — не формальность, а способ доставки: курс остаётся в нём навсегда. Даже если письмо потерялось или вы вспомнили о покупке через год, ссылка будет на месте.
-
Скачивать можно и нужно. Мы рекомендуем сохранить видео на компьютер и смотреть оттуда. Причина простая: облачное хранилище не рассчитано на просмотр видео. Иногда оно позволяет включить ролик прямо в браузере, но качество при этом заметно хуже исходного. На своём компьютере вы увидите курс таким, каким его записывали.
-
Бессрочно. Курс остаётся вашим навсегда, возвращаться к нему можно сколько угодно раз. Если через год или два ссылка вдруг перестанет открываться по техническим причинам — напишите на info@siluette.com.ua, мы её восстановим.
-
Прежде всего: доступ у вас есть в любом случае. Войдите на сайт и откройте раздел «Загрузки» — ссылка на курс уже там, независимо от того, дошло письмо или нет. Чаще всего письмо теряется из-за опечатки в адресе при оформлении заказа. Ещё стоит заглянуть в папку «Спам». Не разбирается — не тратьте время: напишите на info@siluette.com.ua или в чат в правом нижнем углу сайта, мы поможем.
-
Лучше всего на компьютере или ноутбуке: скачайте видео и откройте любым привычным плеером. Понадобятся установленные видеокодеки — на большинстве компьютеров они уже есть. Скачать курс можно на сколько угодно устройств. А вот телефон мы не советуем, и по двум причинам. На маленьком экране плохо видно детали, особенно если в уроке показывают интерфейс программы. И на телефонах часто нет кодеков для форматов, в которых записаны видео.
Оплата и возврат
-
Банковской картой Visa, MasterCard или Prostir, через Google Pay, Apple Pay, Masterpass, Visa Checkout, платёжный QR-код, Botpay в Telegram или Privat24. Есть и оплата частями: Монобанк (3 или 4 платежа), А-Банк (2, 3 или 4 платежа и рассрочка), Банк Глобус (8 платежей), «Скибочка» от OTP Bank (3 платежа), мгновенная рассрочка и оплата частями от ПриватБанка.
-
Да. Платёжная система принимает карты из Евросоюза и любых других стран. Одна деталь, о которой часто забывают: банк может попросить подтвердить платёж — в мобильном приложении или кодом из СМС. Если оплата не проходит, проверьте приложение банка и сообщения.
-
Добавьте в корзину два курса или больше — скидка применится автоматически ко всем товарам в корзине. Два курса: минус 20% на оба. Пять курсов: минус 20% на все пять. Скидка сочетается с любыми акционными ценами и действует на весь каталог без исключений.
-
Цифровые товары возврату и обмену не подлежат. Это общее правило для всех электронных товаров в Украине — постановление Кабинета Министров № 172 от 19 марта 1994 года. При этом мы всегда на связи. Если доступ не открывается, ссылка перестала работать или файлы повреждены — напишите на info@siluette.com.ua, укажите дату и номер заказа. Восстановим. Если что-то непонятно в самом курсе, тоже пишите — подскажем.
-
Пока нет. Мы работаем только с частными покупателями — безналичной оплаты по счёту от юридических лиц сейчас нет.
Как проходит обучение
-
Нет. Все курсы — это записи уроков для самостоятельного изучения: преподаватель не отвечает на вопросы и не проверяет домашние задания. Именно поэтому курсы стоят намного дешевле обучения с куратором. Вы получаете тот же материал, но занимаетесь сами и в своём темпе.
-
Да, цифровой сертификат — по запросу и бесплатно. Напишите на info@siluette.com.ua, укажите имя и фамилию ровно в том виде, в каком хотите видеть их в сертификате, и мы пришлём его в течение суток.
-
Для большинства курсов — нет. Они рассчитаны на начальный уровень и объясняют с азов. Если курс требует подготовки, это сказано в его описании.
-
Нет. Ни дедлайнов, ни расписания, ни сгорающего доступа. Скачали — смотрите когда удобно, с любыми перерывами.
-
Курс покупается для личного использования, и мы просим относиться к этому по-человечески: за каждым уроком стоит работа, а цена и так сильно снижена.
Поддержка
-
Лучше всего на info@siluette.com.ua. Есть и чат в правом нижнем углу сайта, но почта надёжнее: там можно всё описать подробно и приложить скриншоты. Просьба: опишите, что именно вы делали и что пошло не так, и приложите снимок экрана с ошибкой. Так мы решим вопрос сразу, а не будем полдня выяснять, что произошло.
-
В рабочее время, с 9:00 до 19:00, на почту обычно отвечаем в течение часа, в чате — за пару минут. После 19:00 тоже случается, но время ответа не обещаем.


Отзывы покупателей
07.08.2025 Подтвержденный клиент
Я веб-разработчик, и для меня Flutter стал глотком свежего воздуха. Писать для мобилок оказалось не так сложно. Курс дал всю необходимую базу.
30.06.2025 Подтвержденный клиент
Bloc, Redux, MobX - круто, что разобрали все популярные подходы к управлению состоянием. Теперь есть из чего выбрать.
14.09.2024 Подтвержденный клиент
Dart - очень приятный язык. После JavaScript - просто отдых. Курс помог быстро освоиться.