Проект курса: клон Инстаграм

FAQ

  • Могу ли я проходить этот курс, если знаю только HTML/CSS?

    Для прохождения курса нужны базовые знания HTML/CSS и JavaScript, иначе вы будете потеряны и потеряете интерес. Если ваш уровень JavaScript "так себе" и вы его еще не до конца поняли, на курс записываться можно: Flutter поможет с пониманием.

  • Будет ли проще, если я знаю базовый React?

    Однозначно!

  • Какие приложения мы будем строить?

    Мы создадим клон Инстаграм, но не будем реализовывать все его функциональности, так как иначе обучение затянется на годы: мы возьмем основные функциональности и сконцентрируемся на них

  • Есть ли беспроцентная рассрочка?

    Да, на 4 месяца.

  • Будет ли возможность стажировки в канадской компании после окончания курса?

    Возможность будет, но для этого нужно закончить курс, сдать проект и пройти собеседование, то есть все зависит от вас.

  • Сколько длится курс?

    8-12 месяцев (зависит от вашего темпа). Открытие модулей происходит раз в неделю.

Структура курса

  • Введение

  • Что мы будем создавать?

  • Настройка Flutter

  • Основы Dart

  • Виджеты

  • Архитектура папок

  • Темизация

  • Навигация и маршрутизация

  • Firebase

  • Аутентификация

Структура курса

  • Управление глобальным состоянием с помощью Flutter Provider

  • Завершение приложения (не меньше 30 часов)

  • Взаимодействия в реальном времени

  • Уведомления

  • Адаптивный дизайн

  • Заключительные мысли

  • Виджеты, используемые в этом курсе

Стоимость курса

990$ USD

Возможна беспроцентная рассрочка на 4 платежа

Примеры из курса

Вот, что мы будем создавать....

49 модулей

Приветственный модуль

  • Добро пожаловать на курс!

  • Куда писать свои вопросы?

  • Когда появится чат?

  • Как улучшить качество видеоуроков?

  • Как формируется привычка?

  • Успех - диаграмма

  • Топ-продукты для работы мозга


Модуль 1 — Введение во Flutter и установка редактора кода

  • 1 — О модуле

  • 2 — Что мы будем строить?

  • 3 — Как правильно произносить?

  • 4 — Какие компании используют Flutter?

  • 5 — Нативные и кросс-платформенные приложения

  • 6 — Характеристики Flutter

  • 7 — Причины использовать Flutter и его конкуренты

  • 8 — Установка Flutter — Apple iOS — Часть 1

  • 9 — Установка Flutter на Windows

  • 10 — ВАЖНО!

  • 11 — Установка Flutter — Часть 2

  • 12 — Установка Flutter — Часть 3

  • 13 — Установка Android Studio — Apple iOS

  • 14 — Установка Android Studio — Windows

  • 15 — Установка плагинов Flutter & Dart

  • 16 — Создание нового проекта Flutter

  • 17 — Запуск проекта в Android Studio

  • 18 — Домашняя страница приложения

  • 19 — Установка Xcode (только для Mac)

  • 20 — Xcode & Android Studio (только для Mac)

  • Вопросы к модулю

  • Ответы на вопросы

  • Тест к модулю


Модуль 2 — Основы Dart — Создание первой страницы

  • 0 — О модуле

  • 1 — Функции в Dart

  • 2 — Текстовый и дополнительный материал о функциях в Dart

  • 3 — Цифровые типы данных — int, double, num

  • 4 — Текстовый и дополнительный материал о цифровых типах данных

  • 5 — Статья на Medium о числовых типах данных

  • 6 — Текстовый (строковой) тип данных

  • 7 — Текстовый и дополнительный материал о текстовых (строковых) типах данных

  • 8 — Boolean — Логический тип bool

  • 9 — Текстовый и дополнительный материал о логическом типе данных

  • 10 — Другие типы данных

  • 11 — Что такое типы данных?

  • 12 — Другие типы данных (помимо изученных)

  • 13 — Переменные

  • 14 — Текстовый и дополнительный материал по переменным

  • 15 — Текстовый и дополнительный материал по константам

  • 16 — Функция runApp(app)

  • 17 — Резюме урока про runApp(app)

  • 18 — Что такое виджет?

  • 19 — Создание первого класса в main.dart

  • 20 — Что такое классы и зачем они нужны?

  • 21 — Текстовый и дополнительный материал — Что такое классы?

  • 22 — Stateless Widgets

  • 23 — Текстовый и дополнительный материал — StatelessWidget & StatefulWidget

  • 24 — Super & Key

  • 25 — Текстовый и дополнительный материал — Key

  • 26 — @override BuildContexte

  • 27 — Дополнительный материал — Второе назначение @override

  • 28 — Текстовый и дополнительный материал — BuildContext

  • 29 — Создаем class Homepage

  • 30 — Убираем надпись debug

  • 31 — Создаем кнопку и текст

  • 32 — Разбираем написанный код + Домашнее задание

  • Вопросы к модулю

  • Ответы на вопросы

  • Тест к модулю


Модуль 3 — Scaffold class / Виджет Scaffold

  • 0 — О модуле

  • 1 — Удаляем написанный код

  • 2 — Что такое Scaffold?

  • 3 — Material App vs Scaffold

  • 4 — Что такое Material Design?

  • 5 — Текстовый дополнительный материал — Scaffold

  • 6 — Меняем фоновый цвет

  • 7 — Меняем цвет текста

  • 8 — Виджет Center

  • 9 — Текстовый документ — Виджет Center

  • 10 — Домашнее задание — Размер шрифта

  • 11 — Размер шрифта — Стандарты дизайна

  • 12 — Небольшой рефакторинг кода — Создание новой папки

  • 13 — Удаляем ненужный код

  • 14 — Опускаем текст — heightFactor

  • 15 — Виджет Center — Немного теории

  • 16 — Домашнее задание — Добавьте кнопку

  • 17 — Графа — TextField()

  • 18 — Что такое TextField()?

  • 19 — Ставим кнопку и добавляем/убираем const

  • Вопросы к модулю

  • Ответы на вопросы

  • Тест к модулю


Модуль 4 — Работа над страницей Log In

  • 1 — Добавляем изображения

  • 2 — Ссылка на логотип

  • 3 — Ссылка на светлую тему (изображение)

  • 3 — Ссылка на темную тему (изображение)

  • 4 — Добавляем конфигурацию

  • 5 — О документе pubspec.yaml

  • 6 — SvgPicture

  • 7 — Материал об Svg

  • 8 — Указываем нужный package

  • 9 — Инструкции по установке flutter_svg

  • 10 — Работаем с полями и пространством формы

  • 11 — InputDecoration & OutlineInputBorder

  • 12 — Виджет TextField

  • 13 — SizedBox

  • 14 — SizedBox — Доп материал

  • 15 — Expanded

  • 16 — Expanded — Дополнительный материал

  • 17 — Column

  • 18 — Дополнительный материал — Column

  • 19 — Container

  • 20 — Container — резюме

  • 21 — Примеры использования Container

  • 22 — EdgeInsets

  • 23 — EdgeInsets — теория

  • Вопросы к модулю

  • Ответы на вопросы

  • Тест к модулю


Модуль 5 — Работа над страницей Log In — Продолжение

  • 1 — Домашнее задание

  • 2 — Ответ на домашнее задание

  • 3 — Добавляем title

  • 4 — Официальный канал Flutter на YouTube

  • 5 — План на этот модуль

  • 6 — Создаем новую структуру страницы + домашнее задание

  • 7 — Домашнее задание — опускаем логотип и текст ниже

  • 8 — Названия папок во flutter

  • 9 — Принципы наименования документов и переменных

  • 10 — Новый виджет — SafeArea

  • 11 — Документация SafeArea — Домашнее задание

  • 12 — Домашнее задание

  • 13 — Разделяем пространством логотип и текст + Домашнее задание

  • 14 — MediaQuery

  • 15 — Widget Flexible + домашнее задание

  • 16 — Подсказка по поводу фонового цвета

  • 17 — Подсказка по поводу желтого квадрата

  • 18 — Expanded — теория

  • 19 — Expanded — Ссылка на примеры

  • 20 — Ответ на задание о цвете фона

  • 21 — Домашнее задание — logo должен быть наверху, а текст — в самом низу

  • 22 — Домашнее задание

  • 23 — MainAxisAlignment — как он работает? (практика)

  • 24 — MainAxisAlignment — теория

  • 25 — Домашнее задание — MainAxisAlignment

  • 26 — План на следующие уроки этого модуля

  • 27 — Домашнее задание

  • 28 — Новая структура + домашнее задание

  • 29 — Кнопки

  • 30 — Добавляем элементы

  • 31 — Flexible

  • 32 — InkWell

  • 33 — Домашнее задание

  • 34 — Опускаем текст вниз страницы

  • 35 — Домашнее задание

  • 36 — Center — Домашнее задание

  • 37 — Ответ на домашнее задание

  • 38 — Последние штрихи

  • Вопросы к модулю

  • Ответы на вопросы

  • Тест к модулю


Модуль 6 — Темы (Themes) во Flutter и рефакторинг кода

  • 1 — Padding class — Для чего он нужен?

  • 2 — Padding или Container?

  • 3 — Padding — документация

  • 4 — Домашнее задание из урока 1 — С картинками

  • 5 — Ответ на домашнее задание

  • 6 — Домашнее задание

  • 7 — Домашнее задание — Продолжение

  • 8 — Домашнее задание — Продолжение (Container)

  • 9 — Растягиваем кнопку по ширине

  • 10 — Вопросы по поводу double.infinity

  • 11 — Домашнее задание

  • 12 — Напоминание — InputDecoration()

  • 13 — Ответ и новое домашнее задание

  • 14 — Найдите мою ошибку

  • 15 — В чем была ошибка?

  • 16 — Домашнее задание

  • 17 — Ответ и домашнее задание

  • 18 — Новый компонент для TextField

  • 19 — Refactoring — Часть 1 — Найдите ошибку

  • 20 — Refactoring — Часть 2 — Домашнее задание

  • 21 — Refactoring — Часть 3

  • 22 — Required

  • 23 — Var, final и const

  • 24 — Что такое тема?

  • 25 — Меняем фон приложения — Часть 1

  • 26 — Меняем фон приложения — Часть 2

  • 27 — Что такое тема? Продолжение

  • 28 — Смена цвета шрифта — Часть 1

  • 29 — Домашнее задание

  • 30 — Смена цвета шрифта — Часть 2 — HEX

  • 31 — Primary и secondary color — Часть 1 (Пример)

  • 32 — Primary vs secondary color — Часть 2 (Теория)

  • 33 — Домашнее задание

  • 34 — Номер кода HEX

  • 35 — Меняем шрифт при темной теме

  • 36 — Домашнее задание

  • 37 — Меняем семью шрифта

  • 38 — Документация о смене семьи шрифта

  • 39 — Theme Refactoring — Часть 1

  • 40 — Theme Refactoring — Часть 2 — Домашнее задание

  • 41 — Theme Refactoring — Часть 3 — Домашнее задание

  • 42 — Theme Refactoring — Часть 4 — Домашнее задание

  • 43 — Theme Refactoring — Домашнее задание ****

  • 44 — Theme Refactoring — Классы ****

  • Вопросы к модулю

  • Ответы на вопросы

  • Тест к модулю


Модуль 7 — Промежуточный контроль

  • Домашнее задание №1

  • Домашнее задание №2

  • Домашнее задание №3

  • Домашнее задание №4

  • Домашнее задание №5

  • Ответы


Модуль 8 — Ответы на домашние задания и создание страницы Signup

  • 1 — Задание №1 — Padding

  • 2 — Задание №2 — Кнопка

  • 3 — Задание №3 — Граница

  • 4 — Задание №3 — Граница — Refactoring

  • 5 — Задание №4

  • 6 — Цвет шрифта и тернарный оператор

  • 7 — Цвет шрифта и тернарный оператор

  • 8 — Документация

  • 9 — Улучшение + домашнее задание

  • 10 — Ответ на домашнее задание — Рефакторинг

  • 11 — Следующие страницы которые мы создадим (их 3!)

  • 12 — 3 страницы вместе (для вашего удобства)

  • 13 — Что дальше?

  • 14 — Navigator — Часть 1

  • 15 — Navigator — Часть 2

  • 16 — Документация о Flutter

  • 17 — Домашнее задание из урока 15 — Макет

  • 18 — Ответ на домашнее задание из урока 15

  • 19 — Новая архитектура страниц Signup

  • 20 — Домашнее задание на неделю


Модуль 9 — Signup и навигация + Практические задания на понимание

  • О модуле

  • 1 — Ответ на домашнее задание

  • 2 — Начало рефакторинга стиля

  • 3 — Рефакторинг стиля — gapValue

  • 4 — Рефакторинг стиля — Padding — 1

  • 5 — Рефакторинг стиля — Padding — 2

  • 6 — Страница Signup — Padding

  • 7 — 4 домашних задания по стилю Signup

  • 8 — Домашнее задание — Создайте новую страницу

  • 9 — Домашнее задание — Создайте новую страницу


Модуль 10 — Signup и навигация — продолжение

  • 1 — Ответ на домашнее задание — Стили

  • 2 — Ответ на домашнее задание — Новая страница (пока без навигации)

  • 3 — Примечание к следующему уроку

  • 4 — Добавление кнопки I didn't get the code

  • 5 — Навигация — Создаем routes

  • 6 — Навигация — Email Confirmation Code

  • 7 — Домашнее задание

  • 8 — Создание кнопки I didn't get the code

  • 9 — Примечание

  • 10 — Страница Create a password + Навигация

  • 11 — Домашнее задание

  • 12 — Рефакторинг кода папки Signup — 1

  • 13 — Рефакторинг кода папки Signup — 2

  • 14 — Рефакторинг кода папки Signup — 3

  • 15 — Рефакторинг кода папки Signup — 4

  • 16 — Домашнее задание

  • 17 — Подсказки к заданию


Модуль 11 — Завершение работы с Sign up

  • 1 — Ответ на домашнее задание и еще одно домашнее задание

  • 2 — Рефакторинг навигации — 1

  • 3 — Рефакторинг навигации — 2 + домашнее задание

  • 4 — Рефакторинг навигации — 3

  • 5 — Рефакторинг навигации — 4

  • 6 — Домашнее задание — посмотрите также следующий урок для понимания формата стиля

  • 7 — Требования к заданию

  • 8 — Ответ и 2 новых домашних задания (смотрите также следующий урок)

  • 9 — Требования к заданиям


Модуль 12 — Установка базы данных

  • 1 — Ответ на задание №1

  • 2 — Установка Firebase

  • 3 — Установка Firebase — 2

  • 4 — Домашнее задание


Модуль 13 — Подготовка к аутентификации

  • 1 — Отображаем HomeScreen

  • 2 — Решаем технические проблемы — Часть 1

  • 3 — Решаем технические проблемы — Часть 2

  • 4 — Рефакторинг кода — Часть 1

  • 5 — Рефакторинг кода — Часть 2

  • 6 — Рефакторинг кода — Часть 3

  • 7 — Рефакторинг кода — Часть 4

  • 8 — Рефакторинг кода — Часть 5

  • 9 — Рефакторинг кода — Часть 6 + Домашнее задание

  • 10 — Рефакторинг кода — Часть 7

  • 11 — Рефакторинг кода — Часть 8

  • 12 — Рефакторинг кода — Часть 9

  • 13 — Что такое Provider?

  • 14 — Статьи для чтения

  • 15 — Provider — Часть 1

  • 16 — Provider — Часть 2

  • 17 — Доступ к графам, которые заполняет пользователь

  • 18 — Text Editing Controller

  • 19 — Text Editing Controller

  • 20 — Важно

  • 21 — Text Editing Controller — Часть 1

  • 22 — Text Editing Controller — Часть 2

  • 23 — Text Editing Controller — Часть 3

  • 24 — Text Editing Controller — Часть 4

  • 25 — Text Editing Controller — Часть 5

  • 26 — Text Editing Controller — Часть 6

  • 27 — Text Editing Controller — Часть 7

  • 28 — Text Editing Controller — Часть 8

  • 29 — Text Editing Controller — Часть 9

  • 30 — Text Editing Controller — Резюме

  • 31 — Пошаговое объяснение — TextEditingController

  • 32 — Что такое _signupEmailController?

  • 33 — Что такое textInputField?


Модуль 14 — Аутентификация — Signup — Email

  • 1 — Пример использования Provider

  • 2 — Пример использования Provider — Разбор

  • Разбор примера Provider и ChangeNotifier

  • 4 — Документация для изучения

  • 5 — AuthProvider.dart

  • 6 — Разбор синтаксиса — authprovider.dart

  • 7 — Работаем над кнопкой Next

  • 8 — Небольшой рефакторинг

  • 9 — Работаем над кнопкой Next — Часть 2

  • 10 — Внедряем Provider

  • 11 — Устраняем ошибку

  • 12 — Разбираем код — Часть 1

  • 13 — Provider и ChangeNotifier

  • 14 — Разбор синтаксиса — signup_email_screen.dart

  • 15 — Разбираем код — Часть 2

  • 16 — Разбор синтаксиса — main.dart


Модуль 15 — Аутентификация — Signup — Password

  • Password

  • 1 — Создаем AuthService

  • 2 — AuthService — Регистрация пользователя

  • 3 — Null safety

  • 4 — Authentication — Try & catch

  • 5 — Future

  • 6 — firebaseUser

  • 7 — AuthProvider & AuthService

  • 8 — Объяснения написанного кода

  • 9 — Добавляем логику

  • 10 — Домашнее задание

  • 11 — Устраняем 3 проблемы

  • 12 — Объяснение написанного кода

  • 13 — Тернарный оператор и состояние


Модуль 16 — Управление маршрутизацией

  • 1 — Цель этого модуля

  • 2 — Separation of concerns — Routes

  • 3 — Separation of concerns — Теория и примеры

  • 4 — Separation of concerns — Документация

  • 5 — Добавляем пути в документ AppRoutes

  • 6 — AppRoutes — продолжение (1)

  • 7 — AppRoutes — продолжение (2)

  • 8 — static Map getRoutes()

  • 9 — AppRoutes — продолжение (3)

  • 10 — AppRoutes — продолжение (4)

  • 11 — AppRoutes — продолжение (5)

  • 12 — AppRoutes — продолжение (6)

  • 13 — Home — ошибка

  • 14 — auth.screen — домашнее задание

  • 15 — Логика документа auth.screen (1)

  • 16 — Логика документа auth.screen (2)

  • 17 — Домашнее задание

  • 18 — Ответ на домашнее задание

  • 19 — Домашнее задание

  • 20 — Ответ на домашнее задание

  • 21 — Local storage — Shared preferences (1)

  • 22 — Shared Preferences — Теория и документация

  • 23 — Local storage — Shared preferences (2)

  • 24 — Local storage — Shared preferences (3)

  • 25 — Local storage — Shared preferences (4)

  • 26 — Local storage — Shared preferences (5)

  • 27 — Домашнее задание (тернарный оператор)

  • 28 — Ответ на домашнее задание

  • 29 — Тестируем логику кода (1)

  • 30 — Тестируем логику кода (2)

  • 31 — Тестируем логику кода (3)

  • 32 — Резюме сделанного


Модуль 17 — Страница Login (1)

  • 1 — Рефакторинг sharedPreferences (1)

  • 2 — Final vs late

  • 3 — Рефакторинг sharedPreferences (2)

  • 4 — Рефакторинг sharedPreferences (3)

  • 5 — Рефакторинг sharedPreferences (4)

  • 6 — Рефакторинг sharedPreferences (5)

  • 7 — Создаем модель пользователя

  • 8 — Что такое Stream Builder?

  • 9 — Используем StreamBuilder (1)

  • 10 — Используем StreamBuilder (2)

  • 11 — Используем StreamBuilder (3)

  • 12 — Разъяснения по уроку 11

  • 13 — Условия в StreamBuilder (1)

  • 14 — Условия в StreamBuilder (2)

  • 15 — PushNamed и pushReplacementNamed

  • 16 — Условия в StreamBuilder (3)

  • 17 — Условия в StreamBuilder (4)

  • 18 — Страница HomePage

  • 19 — Домашнее задание — HomePage

  • 20 — Ответ — HomePage

  • 21 — Кнопка Logout (1)

  • 22 — Кнопка Logout (2)

  • 23 — Login Page

  • 24 — Материалы для дополнительного изучения


Модуль 18 — Завершение работы над страницей Login

  • 1 — Создаем loginWithEmailAndPassword

  • 2 — Ответ на домашнее задание

  • 3 — UserAccountModel

  • 4 — Factory в UserAccountModel

  • 5 — Что такое factory?

  • 6 — Factory — документация

  • 7 — Factory и рефакторинг (1)

  • 8 — Рефакторинг (2)

  • 9 — Домашнее задание

  • 10 — Ответ на домашнее задание

  • 11 — Домашнее задание

  • 12 — Ответ на домашнее задание

  • 13 — Домашнее задание

  • 14 — Ответ на домашнее задание

  • 15 — Тестируем код (1)

  • 16 — Тестируем код (2)

  • 17 — Домашнее задание

  • 18 — Switch/case — ссылки

  • 19 — Ответ на домашнее задание

  • 20 — Домашнее задание

  • 21 — Ответ на домашнее задание

  • 22 — Рефакторинг (1)

  • 23 — Рефакторинг (2)

  • 24 — Рефакторинг (3)

  • 25 — Рефакторинг (4)

  • 26 — Рефакторинг (5)

  • 27 — Рефакторинг (6)

  • 28 — Рефакторинг (7)

  • 29 — Рефакторинг (8)

  • 30 — Рефакторинг (9)

  • 31 — Рефакторинг (10)

  • 32 — Рефакторинг (11)

  • 33 — Домашнее задание

  • 34 — Рефакторинг (12)

  • 35 — Рефакторинг (13)

  • 36 — Рефакторинг (14)

  • 37 — Рефакторинг (15)

  • 38 — Рефакторинг (16) + Домашнее задание

  • 39 — Рефакторинг (17) + Ответ на домашнее задание

  • 40 — Тестируем код (1)

  • 41 — Тестируем код (2)

  • 42 — Тестируем код (3)

  • 43 — Документация по SnackBar + Домашнее задание

  • 44 — Ответ на домашнее задание

  • 45 — SnackBar

  • 46 — Объяснение написанного кода (1)

  • 47 — Объяснение написанного кода (2)

  • 48 — Объяснение написанного кода (3)


Модуль 19 — Подтверждение кода — Регистрация

  • 1 — Страница подтверждения кода

  • 2 — Маршрутизация + Ответ на домашнее задание

  • 3 — Текст страницы

  • 4 — Код для следующего урока

  • 5 — Создаем вызов сервера (1)

  • 6 — Создаем вызов сервера (2)

  • 7 — Создаем вызов сервера (3) — jsonEncode

  • 8 — Создаем вызов сервера (4)

  • 9 — Создаем вызов сервера (5)

  • 10 — Первый тест

  • 11 — OTP — (1)

  • 12 — Домашнее задание

  • 13 — Ответ на домашнее задание

  • 14 — Объяснения

  • 15 — OTP (2)

  • 16 — Состояние

  • 17 — OTP (3)

  • 18 — OTP (4)

  • 19 — Домашнее задание

  • 20 — Ответ на домашнее задание

  • 21 — Условие и состояние

  • 22 — Улучшение кода (1)

  • 23 — Улучшение кода (2)

  • 24 — Текст об ошибке (1)

  • 25 — Домашнее задание

  • 26 — Текст об ошибке (2)

  • 27 — Текст об ошибке (3)

  • 28 — Текст об ошибке (4)

  • 29 — Тестируем код


Итоговый тест по первой части курса

  • Это обязательный этап для перехода к части 2

  • 115 вопросов


Модуль 20 — Создание пользователей и постов

  • 1 — О модуле

  • 2 — Работа с firebase store

  • 3 — Создаем первую коллекцию пользователей (1)

  • 4 — Создаем первую коллекцию пользователей (2)

  • 5 — Создаем первую коллекцию пользователей (3)

  • 6 — Создаем первую коллекцию пользователей (4)

  • 7 — Создаем первую коллекцию пользователей (5)

  • 8 — Создаем вторую коллекцию пользователей (1)

  • 9 — Создаем вторую коллекцию пользователей (2)

  • 10 — Создаем коллекцию публикаций (1)

  • 11 — Создаем коллекцию публикаций (2)

  • 12 — Копируем все ссылки

  • 13 — Создаем коллекцию публикаций (3)

  • 14 — Создаем коллекцию публикаций (4)

  • 15 — Создаем коллекцию публикаций (5)

  • 16 — Создаем коллекцию публикаций (6)

  • 17 — Что будет дальше?


Модуль 21 — Создание профиля пользователя — Часть 1

  • 1 — Переименовываем документы (1)

  • 2 — Рефакторинг (1)

  • 3 — Рефакторинг (2)

  • 4 — Рефакторинг (3)

  • 5 — Рефакторинг (4)

  • 6 — Информация о пользователе (1)

  • 7 — Enum

  • 8 — Применяем enum

  • 9 — Информация о пользователе (2) + ДЗ

  • 10 — Информация о пользователе (3) + ДЗ

  • 11 — Документация firebase для изучения

  • 12 — Информация о пользователе (4)

  • 13 — Информация о пользователе (5)

  • 14 — Информация о пользователе (6)

  • 15 — Объяснение кода из урока 14

  • 16 — Генерация идентификатора пользователя (1)

  • 17 — Генерация идентификатора пользователя (2)

  • 18 — Генерация идентификатора пользователя (3)

  • 19 — Генерация идентификатора пользователя (4)

  • 20 — Объяснения SHA-256, UTF-8, BASE64URL

  • 21 — Генерация идентификатора пользователя (5)

  • 22 — Генерация идентификатора пользователя (6)

  • 23 — Генерация идентификатора пользователя (7)

  • 24 — Генерация идентификатора пользователя (8)


Модуль 22 — Создание профиля пользователя — Часть 2

  • 1 — Генерация аватарок (1)

  • 2 — Генерация аватарок (2)

  • 3 — Генерация аватарок (3)

  • 4 — Генерация аватарок (4)

  • 5 — Улучшаем код

  • 6 — Ошибка при генерации пользователя (1)

  • 7 — Ошибка при генерации пользователя (2)

  • 8 — Ошибка при генерации пользователя (3)

  • 9 — Ошибка при генерации пользователя (4) + ДЗ

  • 10 — Ошибка при генерации пользователя (5)

  • 11 — Ошибка при генерации пользователя (6)

  • 12 — Объяснения


Модуль 23 — Создание профиля пользователя — Часть 3

  • 1 — Добавляем опционные параметры

  • 2 — Устанавливаем cloud package

  • 3 — Устанавливаем соединение с Firebase

  • 4 — Добавляем пользователя в коллекцию пользователей (1)

  • 5 — Добавляем пользователя в коллекцию пользователей (2)

  • 6 — Добавляем пользователя в коллекцию пользователей (3)

  • 7 — Map< String, dynamic > Function (1)

  • 8 — Map< String, dynamic > Function (2)

  • 9 — Map< String, dynamic > Function (3)

  • 10 — Домашнее задание (1)

  • 11 — Ответ на домашнее задание (1)

  • 12 — Домашнее задание (2)

  • 13 — Ответ на домашнее задание (2)

  • 14 — Тестируем код (1)

  • 15 — Тестируем код (2)

  • 16 — Тестируем код (3)

  • 17 — Тестируем код (4)


Модуль 24 — Устранение ошибок и работа над Home Page

  • 1 — Откуда идет ошибка?

  • 2 — Метод copyWith (1)

  • 3 — Метод copyWith (2)

  • 4 — Теория — copyWith({})

  • 5 — Тестируем код

  • 6 — Объяснение написанного кода

  • 7 — Создаем 2 других пользователя

  • 8 — Логика создания постов (1)

  • 9 — Логика создания постов (2)

  • 10 — Логика создания постов (3)

  • 11 — Домашнее задание

  • 12 — Ответ на домашнее задание

  • 13 — Объяснение кода

  • 14 — Логика создания постов (4)

  • 15 — Объяснения и документация

  • 16 — Логика создания постов (5)

  • 17 — Домашняя страница (1)

  • 18 — Объяснения кода

  • 19 — Устранение ошибки и вывод постов в консоль

  • 20 — Объяснение кода (1)

  • 21 — Объяснение кода (2)

  • 22 — Объяснение кода (3)

  • 23 — Объяснение кода (4)

  • 24 — Объяснение кода (5)

  • 25 — Объяснение кода (6)


Модуль 25 — Работа над Home Page — Часть 2

  • 1 — Factory в Post

  • 2 — Исправление ошибки

  • 3 — Объяснение кода

  • 4 — Данные поста и пользователей

  • 5 — Объяснение кода — Post и add()

  • 6 — 3 сценария — Посты

  • 7 — Отображение постов — 1

  • 8 — ListView — Объяснение

  • 9 — Отображение постов — 2

  • 10 — Устранение ошибки — «Нет разрешения»

  • 11 — Отображение в консоли

  • 12 — Устранение ошибки — «Null is not a subtype of type String»

  • 13 — Устранение ошибки — «List dynamic is not a subtype of List Media»

  • 14 — Устранение ошибки — «String is not a subtype of type Media Type» — 1

  • 15 — Устранение ошибки — «String is not a subtype of type Media Type» — 2

  • 16 — Объяснение кода — Post

  • 17 — Объяснение кода — Media

  • 18 — Отображение пользователей и постов — 1

  • 19 — Отображение пользователей и постов — 2

  • 20 — Отображение пользователей и постов — 3

  • 21 — Отображение пользователей и постов — 4

  • 22 — Отображение пользователей и постов — 5

  • 23 — Виджет Card и объяснение кода


Модуль 26 — Работа над Home Page — Часть 3

  • 1 — Логотип клона инстаграм (1)

  • 2 — Логотип клона инстаграм (2)

  • 3 — Работа с padding (1)

  • 4 — Работа с padding (2) + Домашнее задание

  • 5 — Работа с padding (3) + Ответ на домашнее задание

  • 6 — Домашнее задание

  • 7 — Домашнее задание

  • 8 — Ответ на домашнее задание

  • 9 — Логотип клона инстаграм (3)

  • 10 — Добавляем сердечко

  • 11 — Домашнее задание

  • 12 — Ответ на домашнее задание

  • 13 — Логотип клона инстаграм (4)

  • 14 — Увеличиваем пространство AppBar

  • 15 — Небольшой рефакторинг

  • 16 — BottomNavigationBar (1)

  • 17 — BottomNavigationBar (2)

  • 18 — Домашнее задание

  • 19 — BottomNavigationBar (3)

  • 20 — BottomNavigationBar (4)

  • 21 — BottomNavigationBar (5)

  • 22 — BottomNavigationBar (6)

  • 23 — Домашнее задание

  • 24 — BottomNavigationBar (7)

  • 25 — Домашнее задание

  • 26 — Домашнее задание

  • 27 — BottomNavigationBar (8)

  • 28 — BottomNavigationBar (9)

  • 29 — BottomNavigationBar (10)

  • 30 — BottomNavigationBar (11)

  • 31 — BottomNavigationBar (12)

  • 32 — BottomNavigationBar (13)

  • 33 — BottomNavigationBar (14)

  • 34 — BottomNavigationBar (15)

  • 35 — Объяснение кода — Зачем мы прописали init?

  • 36 — Объяснение кода


Модуль 27 — Работа над Home Page — Часть 4

  • 1 — План на эту неделю

  • 2 — Новый виджет

  • 3 — Установка Carousel Slider

  • 4 — Объяснение кода из урока 3

  • 5 — Carousel Slider

  • 6 — Объяснение кода из урока 5

  • 7 — Работа с carousel

  • 8 — Объяснение кода из урока 7

  • 9 — Что мы возвращаем?

  • 10 — Объяснение кода из урока 9

  • 11 — Отображаем видео (1)

  • 12 — Объяснение кода из урока 11

  • 13 — Отображаем видео (2)

  • 14 — Объяснение кода из. урока 13

  • 15 — Что такое toList()

  • 16 — Опции в Carousel Slider

  • 17 — Объяснение кода из урока 16

  • 18 — Тестируем код

  • 19 — Объяснение кода из урока 17

  • 20 — Исправляем ошибку (1)

  • 21 — Исправляем ошибку (2)

  • 22 — Исправленный код

  • 23 — Объяснение кода из урока 22

  • 24 — Исправляем ошибку (3)

  • 25 — Объяснение кода из урока 24

  • 26 — Исправляем ошибку (4)

  • 27 — Объяснение кода из урока 26

  • 27 — Исправляем ошибку (5)

  • 28 — Дорабатываем отображение видео

  • 29 — Объяснение кода из урока 28

  • 30 — Воспроизведение видео (1)

  • 31 — Воспроизведение видео (2)

  • 32 — Воспроизведение видео (3)

  • 33 — Объяснение кода из уроков 30, 31 и 32

  • 34 — Устраняем глюк

  • 35 — Добавляем паузу

  • 36 — Объяснение кода из урока 35

  • 37 — Почему пауза перед play?

  • 38 — Добавляем круги под фото и видео

  • 39 — Объяснение кода из урока 38

  • 40 — Последнее улучшение и новые элементы

  • 41 — Firebase — Posts

  • 42 — Мои ссылки на фото и видео из Firebase — Пользователь 1

  • 43 — Мои ссылки на материалы из Firebase — Пользователь 2


Модуль 28 — Работа над Home Page — Часть 5

  • 1 — Создаем новый компонент

  • 2 — Иконка сердца

  • 3 — Домашнее задание

  • 4 — Иконки: оптимизируем код (1)

  • 5 — Иконки: оптимизируем код (2)

  • 6 — Иконки: оптимизируем код (3)

  • 7 — Иконки: стиль (1)

  • 8 — Иконки: стиль (2)

  • 9 — Иконки: стиль (3)

  • 10 — Иконки: стиль (4)

  • 11 — Иконки: стиль (5)

  • 12 — Ник пользователя и описание поста (1)

  • 13 — Ник пользователя и описание поста (2)

  • 14 — Ник пользователя и описание поста (3)

  • 15 — Работа с датой (1)

  • 16 — Отделение текста от картинки

  • 17 — Иконки: стиль (6)

  • 18 — Домашнее задание

  • 19 — Ответ на домашнее задание

  • 20 — Работа с датой (2)

  • 21 — Работа с датой (3)

  • 22 — Домашнее задание

  • 23 — Ответ на домашнее задание

  • 24 — Ник пользователя и аватарка

  • 25 — Кнопка Follow

  • 26 — Улучшаем стиль (1)

  • 27 — Улучшаем стиль (2)

  • 28 — Улучшаем стиль (3)

  • 29 — Улучшаем стиль (4)

  • 30 — Улучшаем стиль (5)

  • 31 — Stack — что это?

  • 32 — Улучшаем стиль (6)

  • 33 — Улучшаем стиль (7)

  • 34 — Улучшаем стиль (8)

  • 35 — Форматируем число лайков (1)

  • 36 — Форматируем число лайков (2)


Модуль 29 — Работа над Home Page — Часть 6

  • 1 — Об этом модуле

  • 2 — Объяснения

  • 3 — Outlined button

  • 4 — Inkwell

  • 5 — Объяснения

  • 6 — Post Service (1)

  • 7 — Post Id

  • 8 — User avatar

  • 9 — Post Service (2)

  • 10 — Likes (1)

  • 11 — Likes (2) — Домашнее задание

  • 12 — Likes (3)

  • 13 — Комменты и репосты

  • 14 — Кнопка Follow (1)

  • 15 — Кнопка Follow (2)

  • 16 — Комменты (1)

  • 17 — Комменты (2)

  • 18 — Домашнее задание (ответ откроется в след модуле)


Модуль 30 — Работа над Home Page — Часть 7

  • 1 — Меняем компонент на компонент с состоянием

  • 2 — Работаем с watch

  • 3 — Что такое watch?

  • 4 — Notify listeners (1)

  • 5 — Notify listeners (2)

  • 6 — Notify listeners (3)

  • 7 — Работаем с инфой о пользователе (1)

  • 8 — Работаем с инфой о пользователе (2)

  • 9 — Работаем с инфой о пользователе (3)

  • 10 — Работаем с инфой о пользователе (4)

  • 11 — Работаем с инфой о пользователе (5)

  • 12 — Работаем с инфой о пользователе (6)

  • 13 — Работаем с инфой о пользователе (7)

  • 14 — Объяснение кода (1) — user-profile.provider.dart

  • 15 — Объяснение кода (2) — user-profile.dart

  • 16 — Объяснение кода (3) — предыдущий документ

  • 17 — Объяснение кода (4) — use-profile.service.dart

  • 18 — Работа с комментами (1)

  • 19 — Работа с комментами (2)

  • 20 — Работа с комментами (3)

  • 21 — Работа с комментами (4)

  • 22 — Работа с комментами (5)

  • 23 — Работа с комментами (6)

  • 24 — Работа с комментами (7)

  • 25 — Работа с комментами (8)

  • 26 — Задание

  • 27 — Работа с комментами (9)

  • 28 — Работа с комментами (10)

  • 29 — Код

  • 30 — Объяснение кода


Модуль 31 — Работа над комментами

  • 1 — Визуал модального окна — Часть 1

  • 2 — Визуал модального окна — Часть 2

  • 3 — Домашнее задание

  • 4 — Ответ на домашнее задание

  • 5 — Домашнее задание

  • 6 — Ответ на домашнее задание

  • 7 — Устраняем ошибку

  • 8 — Объяснение кода

  • 9 — Работаем с сервисом — Часть 1

  • 10 — Объяснение кода

  • 11 — Работаем с сервисом — Часть 2

  • 12 — Объяснение кода

  • 13 — Работаем с сервисом — Часть 3

  • 14 — Объяснение кода

  • 15 — Работаем с сервисом — Часть 4

  • 16 — Объяснение кода

  • 17 — Работаем с сервисом — Часть 5

  • 18 — Объяснение кода

  • 19 — Работаем с сервисом — Часть 6

  • 20 — Объяснение кода

  • 21 — Работаем с сервисом — Часть 7

  • 22 — Объяснение кода

  • 23 — Работаем с сервисом — Часть 8

  • 24 — Объяснение кода

  • 25 — Работаем с сервисом — Часть 9

  • 26 — Объяснение кода

  • 27 — Работаем с сервисом — Часть 10

  • 28 — Объяснение кода

  • 29 — Работа с кнопкой submit

  • 30 — Объяснение кода

  • 31 — Тестируем логику

  • 32 — Отображение коммента


Модуль 32 — Работа над комментами — Часть 2

  • 1 — Домашнее задание

  • 2 — Ответ на домашнее задание — 1

  • 3 — Объяснение кода

  • 4 — Ответ на домашнее задание — 2

  • 5 — Объяснение кода

  • 6 — Домашнее задание

  • 7 — Stream Builder — 1

  • 8 — Stream Builder — 2

  • 9 — Объяснение кода

  • 10 — Stream Builder — 3

  • 11 — Stream Builder — 4

  • 12 — Stream Builder — 5

  • 13 — Код

  • 14 — Ищем ошибку — 1

  • 15 — Ищем ошибку — 2

  • 16 — Ищем ошибку — 3

  • 17 — Ищем ошибку — 4

  • 18 — Ищем ошибку — 5

  • 19 — Ищем ошибку — 6

  • 20 — Объяснение кода

  • 21 — Стиль комментов — 1

  • 22 — Стиль комментов — 2

  • 23 — Стиль комментов — 3

  • 24 — Домашнее задание

  • 25 — Ответ на домашнее задание

  • 26 — Последнее улучшение


Модуль 33 — Explore page — Часть 1

  • 1 — Домашнее задание — Файл Gallery

  • 2 — Ответ на домашнее задание

  • 3 — Домашнее задание — Графа поиска

  • 4 — Ответ на домашнее задание

  • 5 — Стиль поля

  • 6 — Объяснение кода

  • 7 — StreamBuilder — Домашнее задание

  • 8 — Объяснение кода

  • 9 — Ответ на домашнее задание

  • 10 — StreamBuilder — 2

  • 11 — Объяснение кода

  • 12 — Зачем три List?

  • 13 — StreamBuilder — 3

  • 14 — Объяснение кода

  • 15 — Файл GalleryThumbNail — Часть 1

  • 16 — Файл GalleryThumbNail — Часть 2

  • 17 — Объяснение кода

  • 18 — Домашнее задание

  • 19 — Ответ на домашнее задание

  • 20 — Отображение видео — Часть 1

  • 21 — Отображение видео — Часть 2

  • 22 — Отображение видео — Часть 3

  • 23 — Объяснение кода

  • 24 — Отображение видео — Часть 4

  • 25 — Отображение видео — Часть 5

  • 26 — Визуальное улучшение


Модуль 34 — Explore page — Часть 2

  • 1 — Домашнее задание — Explore

  • 2 — Ответ на домашнее задание

  • 3 — UserProfileService — 1

  • 4 — UserProfileService — 2

  • 5 — Объяснение кода

  • 6 — UserProfileService — 3

  • 7 — UserProfileService — 4

  • 8 — Объяснение кода

  • 9 — UserProfileService — 5

  • 10 — Объяснение кода

  • 11 — Explore page — 1

  • 12 — Объяснение кода

  • 13 — Explore page — 2

  • 14 — Домашнее задание

  • 15 — Ответ на домашнее задание

  • 16 — Объяснение кода

  • 17 — Explore Page — 3

  • 18 — Explore page — 4

  • 19 — Объяснение кода

  • 20 — Исправляем ошибку и тестируем код

  • 21 — Домашнее задание

  • 22 — Ответ на домашнее задание — 1 (написано с ошибкой)

  • 23 — Ответ на домашнее задание — 2

  • 24 — Объяснение кода

  • 25 — Улучшаем стиль

  • 26 — Объяснение кода

  • 27 — Добавляем isLoading — 1

  • 28 — Объяснение кода

  • 29 — Добавляем isLoading — 2

  • 30 — Объяснение кода


Модуль 35 — User Profile Page — Часть 1

  • 1 — Создаем страницу пользователя

  • 2 — Домашнее задание

  • 3 — Ответ на домашнее задание — 1

  • 4 — Ответ на домашнее задание — 2

  • 5 — Стиль страницы

  • 6 — Объяснение кода

  • 7 — Создаем кнопку Follow

  • 8 — Объяснение кода

  • 9 — Используем кнопку Follow

  • 10 — Домашнее задание

  • 11 — Ответ на домашнее задание

  • 12 — Домашнее задание

  • 13 — Ответ на д/з и Новое домашнее задание

  • 14 — Ответ на домашнее задание — Часть 1

  • 15 — Улучшаем код

  • 16 — Улучшаем код — 2

  • 17 — Улучшаем код — 3

  • 18 — Домашнее задание

  • 19 — Ответ на домашнее задание — 1

  • 20 — Ответ на домашнее задание — 2

  • 21 — Решаем проблему с цветом Follow — 1

  • 22 — Решаем проблему с цветом Follow — 2

  • 23 — Получаем профиль пользователя — 1

  • 24 — Получаем профиль пользователя — 2

  • 25 — Объяснение кода

  • 26 — Кнопка Follow

  • 27 — Получаем профиль пользователя — 3

  • 28 — Получаем профиль пользователя — 4

  • 29 — Получаем профиль пользователя — Часть 5

  • 30 — Объяснение кода

  • 31 — Работа над аватаркой

  • 32 — Посты, подписчики и подписки — 1

  • 33 — Посты, подписчики и подписки — 2

  • 34 — Посты, подписчики и подписки — 3

  • 35 — Посты, подписчики и подписки — 4

  • 36 — Посты, подписчики и подписки — 5

  • 36 — Посты, подписчики и подписки — 6

  • 37 — Объяснение кода

  • 38 — Отображаем посты

  • 39 — Объяснение кода

  • 40 — Рефакторинг — 1

  • 41 — Рефакторинг — 2

  • 42 — Разъединяем элементы

  • 43 — Объяснение кода

  • 44 — Продолжение


Модуль 36 — User Profile Page — Часть 2

  • 1 — Улучшаем визуал — 1

  • 2 — Улучшаем визуал — 2

  • 3 — Улучшаем визуал — 3

  • 4 — Улучшаем визуал — 4

  • 5 — Улучшаем визуал — 5

  • 6 — Улучшаем визуал — 6

  • 7 — Улучшаем визуал — 7

  • 8 — Объяснение кода

  • 9 — Рефакторинг — 1

  • 10 — Рефакторинг — 2

  • 11 — Рефакторинг — 3

  • 12 — Рефакторинг — 4

  • 13 — Рефакторинг — 5

  • 14 — Объяснение кода

  • 15 — Объяснение кода — 2

  • 16 — Получаем посты — 1

  • 17 — Объяснение кода

  • 18 — DocumentReference vs String

  • 19 — Получаем посты — 2

  • 20 — Получаем посты — 3

  • 21 — Получаем посты — 4

  • 22 — Получаем посты — 5

  • 23 — Устраняем ошибку

  • 24 — Ошибка с отображением постов

  • 25 — Какой метод я прописала

  • 26 — Дополнительные проверки

  • 27 — Почему наш код не работал

  • 28 — user-page-screen.dart

  • 29 — post.service.dart

  • 29 — user-page-screen.dart — Объяснения

  • 30 — post.service.dart — Объяснения


Модуль 37 — User Profile Page — Часть 3

  • 1 — План этого модуля

  • 2 — Вводим состояние

  • 3 — InkWell — 1

  • 4 — InkWell — 2

  • 5 — InkWell — 3

  • 6 — Объяснение кода

  • 7 — TabButton — 1

  • 8 — TabButton — 2

  • 9 — TabButton — 3

  • 10 — Объяснение кода

  • 11 — Фильтруем файлы — 1

  • 12 — Фильтруем файлы — 2

  • 13 — Фильтруем файлы — 3

  • 14 — Объяснение кода

  • 15 — Where() и toList()

  • 16 — Мини-шпаргалка по последним модулям


Модуль 38 — Посты пользователя

  • 1 — Новый компонент

  • 2 — Выносим посты отдельно

  • 3 — Редактируем документ — 1

  • 4 — Редактируем документ — 2

  • 5 — Домашнее задание

  • 6 — Ответ на домашнее задание

  • 7 — Домашнее задание

  • 8 — Ответ на домашнее задание

  • 9 — Небольшой корректив

  • 10 — Инкорпорируем InkWell

  • 11 — Домашнее задание

  • 12 — Ответ на домашнее задание — Часть 1

  • 13 — Ответ на домашнее задание — Часть 2

  • 14 — Ответ на домашнее задание — Часть 3

  • 15 — Исправляем ошибки — 1

  • 16 — Исправляем ошибки — 2

  • 17 — Объяснение кода

  • 18 — Исправляем ошибки — 3

  • 19 — Объяснение кода

  • 20 — Домашнее задание

  • 21 — Домашнее задание — продолжение

  • 22 — Домашнее задание — продолжение — 2

  • 23 — Исправляем ошибки — 4

  • 24 — Объяснение кода

  • 25 — Реализовываем новый функционал — 1

  • 26 — Реализовываем новый функционал — 2

  • 27 — Реализовываем новый функционал — 3

  • 28 — Тестируем код

  • 29 — Объяснение кода

  • 30 — Шпаргалка по модулю

  • 31 — Как из списка List Post мы создаём структуру List UserPostMedia


Модуль 39 — Создаем посты — Часть 1

  • 1 — План модуля

  • 2 — Логика для открытия камеры

  • 3 — Даем доступ к камере и микрофону — 1

  • 4 — Даем доступ к камере и микрофону — 2

  • 5 — Даем доступ к камере и микрофону — 3

  • 6 — Даем доступ к камере и микрофону — 4

  • 7 — Даем доступ к камере и микрофону — 5

  • 8 — Даем доступ к камере и микрофону — 6

  • 9 — Тестируем функциональность

  • 10 — Поле для caption — 1

  • 11 — Поле для caption — 2

  • 12 — Новый класс

  • 13 — Установка нового package MIME

  • 14 — Логика на определение типа файла — 1

  • 15 — Логика на определение типа файла — 2

  • 16 — Объяснение кода

  • 17 — Исправляем ошибку

  • 18 — Объяснение кода

  • 19 — Логика на определение типа файла — 3

  • 20 — Объяснение кода

  • 21 — Убираем _

  • 22 — Почему нужно убрать _?

  • 23 — Отображаем изображения — 1

  • 24 — Отображаем изображения — 2

  • 25 — Объяснение кода

  • 26 — Проблема с кодом

  • 27 — Устраняем проблему — 1

  • 28 — Объяснение кода

  • 29 — Устраняем проблему — 2

  • 30 — Объяснение кода

  • 31 — Что такое Uri?

  • 32 — Устраняем проблему — 3

  • 33 — Объяснение кода

  • 34 — Что такое File?

  • 35 — Устраняем проблему — 4

  • 36 — Устраняем проблему — 5

  • 37 — Рефакторинг (всего на 3 минуты!!)

  • 38 — Объяснение кода — 1

  • 39 — Объяснение кода — 2


Модуль 40 — Создаем посты — Часть 2

  • 1 — Вводим тернарный оператор

  • 2 — Визуальное улучшение — 1

  • 3 — Визуальное улучшение — 2

  • 4 — Визуальное улучшение — 3

  • 5 — Визуальное улучшение — 4

  • 6 — Домашнее задание

  • 7 — Ответ на домашнее задание — Часть 1

  • 8 — Ответ на домашнее задание — Часть 2

  • 9 — Posts.screen.dart

  • 10 — Визуал кнопки

  • 11 — Отображаем видео


Модуль 41 — Создаем посты — Часть 3

  • 1 — PostService() — 1

  • 2 — PostService() — 2

  • 3 — PostService() — 3

  • 4 — PostService() — 4

  • 5 — PostService() — 5

  • 6 — PostService() — 6

  • 7 — PostService() — 7

  • 8 — Объяснение кода прошлых уроков — 1

  • 9 — Объяснение кода прошлых уроков — 2

  • 10 — Объяснение кода прошлых уроков — 3

  • 11 — PostService() — 8

  • 12 — PostService() — 9

  • 13 — PostService() — 10

  • 14 — Объяснение кода — 1

  • 15 — Объяснение кода — 2

  • 16 — Объяснение кода — 3

  • 17 — Устраняем ошибку

  • 18 — Объяснение кода

  • 19 — PostService() — 11

  • 20 — Меняем Post

  • 21 — Объяснение кода

  • 22 — Меняем пост — 2

  • 23 — Объяснение кода

  • 24 — Отображение поста — 1

  • 25 — Объяснение кода

  • 26 — Отображение поста — 2

  • 27 — Объяснение кода

  • 28 — Отображение поста — 3

  • 29 — Отображение поста — 4

  • 30 — Отображение поста — 5

  • 31 — Отображение поста — 6

  • 32 — Отображение поста — 7

  • 33 — Отображение поста — 8

  • 34 — post.service.dart

  • 35 — posts.screen.dart

  • 36 — post.dart

  • 37 — media.dart

  • 38 — home-media-slider.dart

  • 39 — Если что-то не работает

  • 40 — Мой pubspec.yaml

  • 41 — Объяснение post.service.dart


Модуль 42 — Страница Reels

  • 1 — Новый блок кода в Post.dart

  • 2 — ListViewBuilder — 1

  • 3 — ListViewBuilder — 2

  • 4 — ListViewBuilder — 3

  • 5 — ListViewBuilder — 4

  • 6 — Объяснение кода

  • 7 — Логика запуска видео — 1

  • 8 — Логика запуска видео — 2

  • 9 — Устраняем ошибки

  • 10 — Объяснение кода

  • 11 — Отображение caption

  • 12 — Video slider

  • 13 — Логика запуска видео — 3

  • 14 — Объяснение кода

  • 15 — Логика запуска видео — 4

  • 16 — Логика запуска видео — 5

  • 17 — Объяснение кода

  • 18 — Устраняем ошибку

  • 19 — Код video media slider

  • 20 — Объяснение кода

  • 21 — Сравнение — что было и что я добавила

  • 22 — Отображение видео — 1

  • 23 — Отображение видео — 2

  • 24 — Условие по circles под постами

  • 25 — VideoProgressIndicator — 1

  • 26 — VideoProgressIndicator — 2

  • 27 — Код

  • 28 — VideoProgressIndicator — 3

  • 29 — Рефакторинг — 1

  • 30 — Рефакторинг — 2

  • 31 — Рефакторинг — 3

  • 32 — Рефакторинг — 4

  • 33 — Домашнее задание — 1

  • 34 — Домашнее задание — 2

  • 35 — Домашнее задание — 3

  • 36 — Ответ на домашние задания

  • 37 — Домашнее задание — 4

  • 38 — Ответ на домашнее задание №4

  • 39 — Рефакторинг — 5

  • 40 — Устраняем визуальный глюк

  • 41 — Визуал страницы — 1

  • 42 — Визуал страницы — 2

  • 43 — Визуал страницы — 3

  • 44 — Визуал страницы — 4

  • 45 — Визуал страницы — 5

  • 46 — Визуал страницы — 6

  • 47 — Визуал страницы — 7


Модуль 43 — Профиль пользователя — Часть 1

  • 1 — Appbar() — 1

  • 2 — Appbar() — 2

  • 3 — Аватарка — 1

  • 4 — Аватарка — 2

  • 5 — Аватарка — 3

  • 6 — Аватарка — 4

  • 7 — Аватарка — 5

  • 8 — Разделительная линия

  • 9 — Работа над полями — 1

  • 10 — Работа над полями — 2

  • 11 — Работа над полями — 3

  • 12 — Работа над полями — 4

  • 13 — Работа над полями — 5

  • 14 — Text controllers — 1

  • 15 — Text controllers — 2

  • 16 — Text controllers — 3

  • 17 — Text controllers — 4

  • 18 — Text controllers — 5

  • 19 — Text controllers — 6

  • 20 — Text controllers — 7

  • 21 — Email controller — 1

  • 22 — Email controller — 2

  • 23 — Placeholders

  • 24 — Подчищаем код

  • 25 — Поле пола gender — 1

  • 26 — Поле пола gender — 2

  • 27 — Поле пола gender — 3

  • 28 — Поле пола gender — 4

  • 29 — Поле пола gender — 5

  • 30 — Поле пола gender — 6

  • 31 — Поле пола gender — 7


Модуль 44 — Профиль пользователя — Часть 2

  • 1 — Добавляем dispose()

  • 2 — Работаем над сменой аватарки — 1

  • 3 — Работаем над сменой аватарки — 2

  • 4 — Обновление профиля пользователя — 1

  • 5 — Обновление профиля пользователя — 2

  • 6 — Обновление профиля пользователя — 3

  • 7 — Обновление профиля пользователя — 4

  • 8 — Обновление профиля пользователя — 5

  • 9 — Работаем над сменой аватарки — 3

  • 10 — Работаем над сменой аватарки — 4

  • 11 — Объяснение кода — 1

  • 12 — Объяснение кода — 2

  • 13 — Работаем над сменой аватарки — 5

  • 14 — Объяснение кода — 3

  • 15 — Работаем над сменой аватарки — 6

  • 16 — Обновление профиля пользователя — 6

  • 17 — Объяснение кода — 4

  • 18 — Объяснение кода — 5

  • 19 — Устранение ошибок — 1

  • 20 — Устранение ошибок — 2

  • 21 — Устранение ошибок — 3

  • 22 — Устранение ошибок — 4

  • 23 — Устранение ошибок — 5

  • 24 — Устранение ошибок — 6

  • 25 — Устранение ошибок — 7

  • 26 — Устранение ошибок — 8

  • 27 — Устранение ошибок — 9


Модуль 45 — Подписки — Часть 1

  • 1 — Что будет в этом модуле

  • 2 — Устраняем баг — видео — 1

  • 3 — Создаем новые поля — 1

  • 4 — Создаем новые поля — 2

  • 5 — Устраняем баг — видео — 2

  • 6 — Устраняем баг — видео — 3

  • 7 — Устраняем баг — видео — 4

  • 8 — Устраняем баг — видео — 5

  • 9 — Новый сервис подписки — 1

  • 10 — Новый сервис подписки — 2

  • 11 — Transaction

  • 12 — Кнопка подписаться — 1 (Draft)

  • 13 — Кнопка подписаться — 2

  • 14 — Логика подписок — 1

  • 15 — Логика подписок — 2

  • 16 — Проблема с context — 1

  • 17 — Проблема с context — 2

  • 18 — Проблема с context — 3

  • 19 — Проблема с context — 4

  • 20 — Проблема с context — 5

  • 21 — Логика подписок — 3

  • 22 — Логика подписок — 4

  • 23 — Логика подписок — 4

  • 24 — Домашнее задание

  • 25 — Ответ

  • 26 — Ошибка в возвращаемом типе — 1

  • 27 — Ошибка в возвращаемом типе — 2

  • 28 — Ошибка в возвращаемом типе — 3

  • 29 — Тест кода

  • 30 — Домашнее задание


Модуль 46 — Подписки — Часть 2

  • 1 — Ответ на ДЗ — Часть 1

  • 2 — Ответ на ДЗ — Часть 2

  • 3 — Рефакторинг — 1

  • 4 — Рефакторинг — 2

  • 5 — Рефакторинг — 3

  • 6 — Тестируем код

  • 7 — Объяснение кода — 1

  • 8 — Объяснение кода — 2

  • 9 — Объяснение кода — 3

  • 10 — Как централизовать любую фичу в Flutter-приложении


Модуль 47 — Кнопка share

  • 1 — Устанавливаем пакет share plus

  • 2 — Устанавливаем пакет share plus dialog

  • 3 — Возвращаем пакет share plus

  • 4 — Итоговое задание по курсу (не обязательное)


Модуль 48 — Публикация приложения — Android

  • 1 — Создаем виртуальное устройство

  • 2 — Ошибка SDK 23 vs SDK 21

  • 3 — Ошибка build gradle 7.1

  • 4 — Ошибка gradle wrapper

  • 5 — Ошибка — несовместимость версий — 1

  • 6 — Ошибка — несовместимость версий — 2 (Draft)

  • 7 — Ошибка — несовместимость версий — 3

  • 8 — Ошибка — несовместимость версий — 4

  • 9 — Ошибка — название приложения

  • 10 — Потеря соединения с устройством

  • 11 — Android SDK — 1

  • 12 — Android SDK — 2

  • 13 — Android SDK — 3

  • 14 — Android SDK — 4

  • 15 — Android SDK — 5

  • 16 — Android SDK — 6

  • 17 — Иконка Инстаграм (для следующего урока)

  • 18 — Меняем иконку приложения — 1

  • 19 — Меняем иконку приложения — 2

  • 20 — Скачиваем Java

  • 21 — Цифровая подпись — 1

  • 22 — Цифровая подпись — 2

  • 23 — Меняем имя приложения — 1

  • 24 — Меняем имя приложения — 2

  • 25 — Устраняем ошибку — 1

  • 26 — Устраняем ошибку — 2

  • 27 — Устраняем ошибку — 3

  • 28 — Устраняем ошибку — 4

  • 29 — Публикуем приложение — 1

  • 30 — Публикуем приложение — 2

  • 31 — Публикуем приложение — 3

  • 32 — Публикуем приложение — 4

  • 33 — Публикуем приложение — 5

  • 34 — Публикуем приложение — 6


Модуль 49 — Публикация приложения — iOS/Apple

  • 1 — Шаг 1

  • 2 — Шаг 2

  • 3 — Шаг 3

  • 4 — Устраняем ошибку — 1

  • 5 — Устраняем ошибку — 2

  • 6 — BundleID — 1

  • 7 — BundleID — 2

  • 8 — Launch image — 1

  • 9 — Launch image — 2

  • 10 — Launch image — 3

  • 11 — Launch image — 4

  • 12 — Двойные кавычки

  • 13 — Launch image — 5

  • 14 — Launch image — 6

  • 15 — Последний шаг