📱 Add Flutter & Dart learning roadmap
This commit is contained in:
543
Flutter/Roadmap.md
Normal file
543
Flutter/Roadmap.md
Normal file
@@ -0,0 +1,543 @@
|
||||
---
|
||||
title: "Flutter & Dart Roadmap"
|
||||
date: 2026-03-26
|
||||
tags:
|
||||
- flutter
|
||||
- dart
|
||||
- mobile
|
||||
- roadmap
|
||||
- learning
|
||||
description: "Подробный план изучения Flutter и Dart для опытного разработчика (C#, Go, JS)"
|
||||
---
|
||||
|
||||
# 🚀 Flutter & Dart Roadmap
|
||||
|
||||
> **Цель:** Самостоятельно создавать мобильные приложения (iOS + Android)
|
||||
> **Опыт:** C#, Go, JavaScript — базовые концепции ООП, async, типизация уже знакомы
|
||||
> **Общая оценка:** ~120–160 часов / 3–4 месяца при 8–10 ч/неделю
|
||||
|
||||
---
|
||||
|
||||
## 📋 Оглавление
|
||||
|
||||
1. [[#Этап 1 — Dart за 1 неделю|Dart за 1 неделю]]
|
||||
2. [[#Этап 2 — Flutter основы|Flutter основы (2 недели)]]
|
||||
3. [[#Этап 3 — Навигация и архитектура|Навигация и архитектура (1.5 недели)]]
|
||||
4. [[#Этап 4 — State Management|State Management (2 недели)]]
|
||||
5. [[#Этап 5 — Работа с данными|Работа с данными (2 недели)]]
|
||||
6. [[#Этап 6 — UI мастерство|UI мастерство (1.5 недели)]]
|
||||
7. [[#Этап 7 — Нативные возможности|Нативные возможности (1 неделя)]]
|
||||
8. [[#Этап 8 — Тестирование и CI/CD|Тестирование и CI/CD (1 неделя)]]
|
||||
9. [[#Этап 9 — Публикация|Публикация в Store (1 неделя)]]
|
||||
10. [[#Этап 10 — Реальный проект|Реальный проект (4–6 недель)]]
|
||||
11. [[#Ресурсы — Каталог|Каталог ресурсов]]
|
||||
|
||||
---
|
||||
|
||||
## Этап 1 — Dart за 1 неделю
|
||||
|
||||
⏱ **~8–12 часов** | С опытом в C# и JS пойдёт быстро
|
||||
|
||||
Dart — типизированный язык, похожий на гибрид C# и TypeScript. Основные отличия: null safety, mixins, extensions, Futures/Streams (аналог Task/Promise).
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] Синтаксис: переменные, типы, `final`/`const`, `late`
|
||||
- [ ] Null safety (`?`, `!`, `??`, `?.`)
|
||||
- [ ] Классы, наследование, mixins, abstract classes
|
||||
- [ ] Extensions (привет, C# extension methods)
|
||||
- [ ] Enums (enhanced enums с методами — Dart 3)
|
||||
- [ ] Generics (знакомо из C#)
|
||||
- [ ] Collections: `List`, `Map`, `Set` + spread operator
|
||||
- [ ] `async`/`await`, `Future`, `Stream`
|
||||
- [ ] Pattern matching и sealed classes (Dart 3) — аналог switch expressions в C#
|
||||
- [ ] Records (аналог tuples/анонимных типов)
|
||||
- [ ] Error handling: `try`/`catch`/`on`
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Dart Language Tour](https://dart.dev/language) — **главный ресурс**, пробежать за 3–4 часа
|
||||
- [ ] 📖 [Dart Codelabs](https://dart.dev/codelabs) — интерактивные упражнения
|
||||
- [ ] 🎮 [DartPad](https://dartpad.dev/) — онлайн-песочница для экспериментов
|
||||
- [ ] 📹 [Dart in 100 Seconds — Fireship](https://www.youtube.com/watch?v=NrO0CJCbYLA) — быстрый обзор
|
||||
- [ ] 📖 [Effective Dart](https://dart.dev/effective-dart) — стайл-гайд и идиомы
|
||||
|
||||
### 🛠 Мини-проект
|
||||
|
||||
**CLI-утилита на Dart** — парсер JSON/CSV, конвертер валют через API, или простой todo-list в терминале. Цель: потрогать язык руками.
|
||||
|
||||
```bash
|
||||
dart create my_cli_app
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Этап 2 — Flutter основы
|
||||
|
||||
⏱ **~16–20 часов / 2 недели**
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] Установка Flutter SDK + настройка IDE (VS Code / Android Studio)
|
||||
- [ ] Эмуляторы: Android (AVD) + iOS Simulator (если есть Mac)
|
||||
- [ ] Структура проекта Flutter: `lib/`, `pubspec.yaml`, `assets/`
|
||||
- [ ] **Widget tree** — всё является виджетом
|
||||
- [ ] `StatelessWidget` vs `StatefulWidget` + `setState()`
|
||||
- [ ] `BuildContext` и жизненный цикл виджетов
|
||||
- [ ] Основные виджеты: `Text`, `Container`, `Column`, `Row`, `Stack`, `ListView`, `GridView`
|
||||
- [ ] `Scaffold`, `AppBar`, `BottomNavigationBar`, `Drawer`
|
||||
- [ ] Layout: `Expanded`, `Flexible`, `SizedBox`, `Padding`, `Align`
|
||||
- [ ] Input: `TextField`, `Form`, `FormField`, валидация
|
||||
- [ ] Кнопки: `ElevatedButton`, `TextButton`, `IconButton`, `FloatingActionButton`
|
||||
- [ ] `Image`, `Icon`, работа с assets
|
||||
- [ ] Material Design 3 и `ThemeData`
|
||||
- [ ] **Hot Reload** — главная суперсила Flutter
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Get Started](https://docs.flutter.dev/get-started) — офиц. туториал установки
|
||||
- [ ] 📖 [Flutter Widget Catalog](https://docs.flutter.dev/ui/widgets) — каталог виджетов с примерами
|
||||
- [ ] 📖 [Flutter Codelabs](https://docs.flutter.dev/codelabs) — пошаговые лабы от Google
|
||||
- [ ] 📹 [Flutter Crash Course for Beginners — Traversy Media](https://www.youtube.com/watch?v=1ukSR1GRtMU) — 1 час, быстрый старт
|
||||
- [ ] 📹 [Flutter Full Course — Mitch Koko](https://www.youtube.com/watch?v=TclK5gNM_PM) — от начала до продвинутого
|
||||
- [ ] 📹 [Flutter Widget of the Week — Google](https://www.youtube.com/playlist?list=PLjxrf2q8roU23XGwz3Km7sQZFTdB996iG) — короткие видео по виджетам
|
||||
- [ ] 📖 [Flutter Layout Cheat Sheet](https://medium.com/flutter-community/flutter-layout-cheat-sheet-5363348d037e)
|
||||
|
||||
### 🛠 Пет-проект: Визитка / Портфолио
|
||||
|
||||
Простое приложение-визитка с несколькими экранами:
|
||||
- [ ] Главный экран с аватаром, именем, описанием
|
||||
- [ ] Страница с контактами (ссылки, email)
|
||||
- [ ] Тёмная/светлая тема
|
||||
|
||||
---
|
||||
|
||||
## Этап 3 — Навигация и архитектура
|
||||
|
||||
⏱ **~12–15 часов / 1.5 недели**
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] `Navigator` 1.0: `push`, `pop`, named routes
|
||||
- [ ] `Navigator` 2.0 и декларативная навигация
|
||||
- [ ] **go_router** — стандарт навигации в 2025+ (рекомендован Google)
|
||||
- [ ] Deep links и параметры в маршрутах
|
||||
- [ ] Вложенная навигация (Shell routes, tab navigation)
|
||||
- [ ] Передача данных между экранами
|
||||
- [ ] Структура проекта:
|
||||
- Feature-first vs Layer-first
|
||||
- Рекомендуемая: `lib/features/<name>/{data, domain, presentation}/`
|
||||
- [ ] Dependency Injection: `get_it` + `injectable`
|
||||
- [ ] Repository pattern (знакомо из C#)
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [go_router docs](https://pub.dev/packages/go_router) — офиц. документация
|
||||
- [ ] 📖 [Flutter Navigation Guide](https://docs.flutter.dev/ui/navigation) — гайд от Google
|
||||
- [ ] 📹 [go_router Tutorial — Andrea Bizzotto](https://codewithandrea.com/articles/flutter-navigation-gorouter-go-vs-push/) — подробный разбор
|
||||
- [ ] 📖 [Flutter App Architecture — Andrea Bizzotto](https://codewithandrea.com/articles/flutter-app-architecture-riverpod-introduction/) — feature-first структура
|
||||
- [ ] 📹 [Flutter Project Structure — Reso Coder](https://www.youtube.com/watch?v=KjE2IDphA_U)
|
||||
|
||||
### 🛠 Пет-проект: Мульти-экранное приложение
|
||||
|
||||
Приложение-справочник (рецепты / заметки / фильмы):
|
||||
- [ ] Список элементов → детальный экран
|
||||
- [ ] go_router с параметрами
|
||||
- [ ] Bottom navigation с 3+ табами
|
||||
- [ ] Поиск и фильтрация
|
||||
|
||||
---
|
||||
|
||||
## Этап 4 — State Management
|
||||
|
||||
⏱ **~16–20 часов / 2 недели** | Самая важная тема
|
||||
|
||||
### Подходы (от простого к сложному)
|
||||
|
||||
- [ ] `setState` — для локального состояния
|
||||
- [ ] `InheritedWidget` — как работает "магия" под капотом
|
||||
- [ ] **Provider** — простой и понятный (хорош для старта)
|
||||
- [ ] **Riverpod** ⭐ — эволюция Provider, **рекомендация 2025+**
|
||||
- Compile-safe, testable, не зависит от BuildContext
|
||||
- `ref.watch`, `ref.read`, `ref.listen`
|
||||
- Providers: `Provider`, `StateProvider`, `NotifierProvider`, `AsyncNotifierProvider`, `FutureProvider`, `StreamProvider`
|
||||
- [ ] **BLoC** — для больших enterprise-приложений
|
||||
- Events → BLoC → States
|
||||
- Знакомый паттерн если работал с Redux/MediatR
|
||||
- [ ] Когда что использовать:
|
||||
- Маленькое приложение → Riverpod
|
||||
- Большое/командное → BLoC
|
||||
- Прототип → setState + Provider
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter State Management Guide](https://docs.flutter.dev/data-and-backend/state-mgmt/intro) — офиц. обзор
|
||||
- [ ] 📖 [Riverpod Documentation](https://riverpod.dev/) — **начни с этого**
|
||||
- [ ] 📹 [Riverpod 2.0 — Complete Guide — Andrea Bizzotto](https://codewithandrea.com/articles/flutter-state-management-riverpod/) — лучший гайд
|
||||
- [ ] 📹 [Flutter Riverpod Tutorial — Vandad Nahavandipoor](https://www.youtube.com/watch?v=vtGCteFYs4M)
|
||||
- [ ] 📖 [BLoC Library](https://bloclibrary.dev/) — офиц. сайт с туториалами
|
||||
- [ ] 📹 [BLoC Tutorial — Reso Coder](https://www.youtube.com/watch?v=THCkkQ-V1-8)
|
||||
- [ ] 📖 [Provider Package](https://pub.dev/packages/provider) — документация
|
||||
|
||||
### 🛠 Пет-проект: Todo App (с архитектурой)
|
||||
|
||||
- [ ] CRUD задач с Riverpod
|
||||
- [ ] Фильтры: все / активные / завершённые
|
||||
- [ ] Persistence (SharedPreferences или Hive)
|
||||
- [ ] Clean Architecture: Data → Domain → Presentation
|
||||
- [ ] Unit-тесты для бизнес-логики
|
||||
|
||||
---
|
||||
|
||||
## Этап 5 — Работа с данными
|
||||
|
||||
⏱ **~16–20 часов / 2 недели**
|
||||
|
||||
### HTTP и API
|
||||
|
||||
- [ ] Пакет `http` — базовые запросы
|
||||
- [ ] **Dio** — продвинутый HTTP-клиент (interceptors, retry, cancel)
|
||||
- [ ] Сериализация JSON: `json_serializable` + `build_runner`
|
||||
- [ ] **Freezed** — генерация data-классов и union types
|
||||
- [ ] Обработка ошибок сети: `Result` pattern, `Either`
|
||||
- [ ] Retrofit (знакомо из .NET!) — генерация API-клиента
|
||||
|
||||
### Локальное хранение
|
||||
|
||||
- [ ] `SharedPreferences` — key-value (как LocalStorage)
|
||||
- [ ] **Hive** — быстрая NoSQL база
|
||||
- [ ] **Drift** (бывший Moor) — type-safe SQLite ORM
|
||||
- [ ] `sqflite` — SQLite напрямую
|
||||
- [ ] `flutter_secure_storage` — для токенов/паролей
|
||||
|
||||
### Firebase (бесплатный tier)
|
||||
|
||||
- [ ] Firebase Auth — аутентификация
|
||||
- [ ] Cloud Firestore — NoSQL база
|
||||
- [ ] Firebase Storage — файлы
|
||||
- [ ] Firebase Messaging (FCM) — push-нотификации
|
||||
- [ ] [FlutterFire](https://firebase.flutter.dev/) — офиц. плагины
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Networking Guide](https://docs.flutter.dev/data-and-backend/networking)
|
||||
- [ ] 📖 [Dio Package](https://pub.dev/packages/dio) — документация
|
||||
- [ ] 📖 [Freezed Package](https://pub.dev/packages/freezed) — генерация моделей
|
||||
- [ ] 📖 [FlutterFire Docs](https://firebase.flutter.dev/) — Firebase для Flutter
|
||||
- [ ] 📹 [Flutter REST API Tutorial — Vandad](https://www.youtube.com/watch?v=CQuxU8JGJnQ)
|
||||
- [ ] 📹 [Firebase Flutter Course — freeCodeCamp](https://www.youtube.com/watch?v=wUSkeTaBonA) — 5+ часов
|
||||
- [ ] 📖 [Drift Documentation](https://drift.simonbinder.eu/docs/getting-started/)
|
||||
|
||||
### 🛠 Пет-проект: Погодное приложение
|
||||
|
||||
- [ ] Запрос к Open-Meteo или OpenWeatherMap API
|
||||
- [ ] Модели через `freezed` + `json_serializable`
|
||||
- [ ] Поиск города, текущая погода + прогноз на 5 дней
|
||||
- [ ] Кэширование последнего запроса в Hive
|
||||
- [ ] Pull-to-refresh
|
||||
- [ ] Красивый UI с анимациями погоды
|
||||
|
||||
---
|
||||
|
||||
## Этап 6 — UI мастерство
|
||||
|
||||
⏱ **~12–15 часов / 1.5 недели**
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] Animations: implicit (`AnimatedContainer`, `AnimatedOpacity`) и explicit (`AnimationController`, `Tween`)
|
||||
- [ ] Hero animations (переходы между экранами)
|
||||
- [ ] Custom Paint — рисование кастомных элементов
|
||||
- [ ] `Sliver` виджеты: `CustomScrollView`, `SliverAppBar`, `SliverList`, `SliverGrid`
|
||||
- [ ] Responsive design: `LayoutBuilder`, `MediaQuery`, `OrientationBuilder`
|
||||
- [ ] Adaptive UI: Material (Android) + Cupertino (iOS)
|
||||
- [ ] Custom widgets: composition vs inheritance
|
||||
- [ ] Themes и дизайн-система (typography, color schemes, spacing)
|
||||
- [ ] Пакеты для UI:
|
||||
- `flutter_animate` — декларативные анимации
|
||||
- `shimmer` — loading placeholders
|
||||
- `cached_network_image` — кэширование картинок
|
||||
- `flutter_svg` — SVG поддержка
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Animations Guide](https://docs.flutter.dev/ui/animations)
|
||||
- [ ] 📹 [Flutter Animations Course — Flutter Official](https://www.youtube.com/watch?v=IVTjpW3W33s)
|
||||
- [ ] 📖 [Flutter Adaptive Design](https://docs.flutter.dev/ui/adaptive-responsive)
|
||||
- [ ] 📹 [Sliver Widgets — Flutter](https://www.youtube.com/watch?v=Mz3kHQxBjGg)
|
||||
- [ ] 📖 [Material 3 in Flutter](https://docs.flutter.dev/ui/design/material)
|
||||
|
||||
### 🛠 Пет-проект: Клон UI известного приложения
|
||||
|
||||
Выбери и воспроизведи UI (без бэкенда):
|
||||
- [ ] Spotify / Netflix / Twitter — карточки, списки, анимации
|
||||
- [ ] Кастомные анимации переходов
|
||||
- [ ] Адаптивный дизайн под разные размеры экрана
|
||||
- [ ] Тёмная и светлая темы
|
||||
|
||||
---
|
||||
|
||||
## Этап 7 — Нативные возможности
|
||||
|
||||
⏱ **~8–10 часов / 1 неделя**
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] Platform channels — вызов нативного кода (Swift/Kotlin)
|
||||
- [ ] Камера: `camera`, `image_picker`
|
||||
- [ ] Геолокация: `geolocator`, `geocoding`
|
||||
- [ ] Карты: `google_maps_flutter` или `flutter_map` (OpenStreetMap)
|
||||
- [ ] Push-уведомления: `firebase_messaging` + `flutter_local_notifications`
|
||||
- [ ] Permissions: `permission_handler`
|
||||
- [ ] Biometrics: `local_auth`
|
||||
- [ ] Deep links и Universal links
|
||||
- [ ] Sharing: `share_plus`
|
||||
- [ ] URL launcher: `url_launcher`
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Platform Integration](https://docs.flutter.dev/platform-integration/platform-channels)
|
||||
- [ ] 📖 [pub.dev](https://pub.dev/) — поиск пакетов, проверяй likes и pub points
|
||||
- [ ] 📹 [Google Maps in Flutter — Johannes Milke](https://www.youtube.com/watch?v=Zz5hMvgiWmY)
|
||||
- [ ] 📖 [Flutter Camera Plugin](https://pub.dev/packages/camera)
|
||||
|
||||
### 🛠 Мини-проект: Приложение с картой
|
||||
|
||||
- [ ] Показать текущее местоположение на карте
|
||||
- [ ] Добавление маркеров / POI
|
||||
- [ ] Поиск мест
|
||||
- [ ] Разрешения runtime
|
||||
|
||||
---
|
||||
|
||||
## Этап 8 — Тестирование и CI/CD
|
||||
|
||||
⏱ **~8–10 часов / 1 неделя**
|
||||
|
||||
### Что изучить
|
||||
|
||||
- [ ] **Unit tests** — тестирование бизнес-логики и репозиториев
|
||||
- [ ] **Widget tests** — тестирование UI-компонентов
|
||||
- [ ] **Integration tests** — E2E тестирование на устройстве/эмуляторе
|
||||
- [ ] Mocking: `mocktail` или `mockito`
|
||||
- [ ] Golden tests — скриншот-тесты UI
|
||||
- [ ] Code coverage: `flutter test --coverage`
|
||||
- [ ] CI/CD:
|
||||
- GitHub Actions / Codemagic / Fastlane
|
||||
- Автоматическая сборка APK/IPA
|
||||
- Автоматическая публикация в stores
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Testing Guide](https://docs.flutter.dev/testing) — офиц. документация
|
||||
- [ ] 📹 [Flutter Testing Tutorial — Reso Coder](https://www.youtube.com/watch?v=RDY6UYh-4dg)
|
||||
- [ ] 📖 [Codemagic CI/CD](https://docs.codemagic.io/flutter/getting-started/) — бесплатный tier для Flutter
|
||||
- [ ] 📖 [Mocktail Package](https://pub.dev/packages/mocktail)
|
||||
|
||||
### 🛠 Практика
|
||||
|
||||
- [ ] Написать тесты для Todo App из Этапа 4
|
||||
- [ ] Unit tests для API-слоя (mock HTTP)
|
||||
- [ ] Widget tests для ключевых экранов
|
||||
- [ ] Настроить CI pipeline (GitHub Actions)
|
||||
|
||||
---
|
||||
|
||||
## Этап 9 — Публикация
|
||||
|
||||
⏱ **~6–8 часов / 1 неделя**
|
||||
|
||||
### Google Play Store
|
||||
|
||||
- [ ] Создать аккаунт разработчика ($25 одноразово)
|
||||
- [ ] Подписать APK/AAB (keystore)
|
||||
- [ ] Скриншоты, описание, иконка
|
||||
- [ ] Privacy Policy (можно сгенерировать)
|
||||
- [ ] Загрузить в Google Play Console
|
||||
- [ ] Internal testing → Closed testing → Production
|
||||
|
||||
### Apple App Store
|
||||
|
||||
- [ ] Apple Developer Program ($99/год)
|
||||
- [ ] Certificates, Identifiers, Profiles
|
||||
- [ ] Archive и загрузка через Xcode / Transporter
|
||||
- [ ] App Store Connect: метаданные, скриншоты
|
||||
- [ ] TestFlight для бета-тестирования
|
||||
- [ ] Ревью Apple (строгие правила)
|
||||
|
||||
### Ресурсы
|
||||
|
||||
- [ ] 📖 [Flutter Deployment — Android](https://docs.flutter.dev/deployment/android)
|
||||
- [ ] 📖 [Flutter Deployment — iOS](https://docs.flutter.dev/deployment/ios)
|
||||
- [ ] 📹 [Publish Flutter App — Mitch Koko](https://www.youtube.com/watch?v=g0GNuoCOtaQ)
|
||||
- [ ] 📖 [Fastlane for Flutter](https://docs.flutter.dev/deployment/cd)
|
||||
|
||||
---
|
||||
|
||||
## Этап 10 — Реальный проект
|
||||
|
||||
⏱ **~40–60 часов / 4–6 недель** | Всё вместе
|
||||
|
||||
### План создания реального приложения
|
||||
|
||||
> Пример: **Personal Finance Tracker** (или любое приложение по интересу)
|
||||
|
||||
#### Фаза 1: Планирование (2–3 дня)
|
||||
- [ ] Определить MVP: 3–5 ключевых фич
|
||||
- [ ] Wireframes (можно в Figma — бесплатно)
|
||||
- [ ] Выбрать стек: Riverpod + go_router + Dio + Drift/Hive
|
||||
- [ ] Спроектировать data models
|
||||
|
||||
#### Фаза 2: Скелет (1 неделя)
|
||||
- [ ] Настроить проект с правильной структурой (feature-first)
|
||||
- [ ] Настроить DI (get_it + injectable)
|
||||
- [ ] Навигация (go_router)
|
||||
- [ ] Базовый UI каждого экрана (placeholder)
|
||||
- [ ] Тема и дизайн-система
|
||||
|
||||
#### Фаза 3: Core Features (2–3 недели)
|
||||
- [ ] Реализовать основную бизнес-логику
|
||||
- [ ] Подключить API / базу данных
|
||||
- [ ] State management для каждой фичи
|
||||
- [ ] Обработка ошибок и loading states
|
||||
- [ ] Offline-first: локальный кэш + синхронизация
|
||||
|
||||
#### Фаза 4: Polish (1 неделя)
|
||||
- [ ] Анимации и micro-interactions
|
||||
- [ ] Responsive дизайн
|
||||
- [ ] Обработка edge-cases
|
||||
- [ ] Performance: profiling с DevTools
|
||||
- [ ] Accessibility (семантика для screen readers)
|
||||
|
||||
#### Фаза 5: Launch (3–5 дней)
|
||||
- [ ] Написать unit + widget тесты (coverage >60%)
|
||||
- [ ] CI/CD pipeline
|
||||
- [ ] Подготовить store listing
|
||||
- [ ] Бета-тест через TestFlight / Internal Testing
|
||||
- [ ] Релиз 🚀
|
||||
|
||||
### Идеи для реальных проектов
|
||||
|
||||
| Проект | Чему научит |
|
||||
|--------|-------------|
|
||||
| 💰 Финансовый трекер | CRUD, графики, локальная БД, экспорт |
|
||||
| 📝 Заметки/Markdown | Редактор, файловая система, синхронизация |
|
||||
| 🏋️ Трекер тренировок | Таймеры, анимации, статистика |
|
||||
| 🍕 Доставка еды (клон) | Карты, API, корзина, навигация |
|
||||
| 📰 Новостной агрегатор | RSS, API, кэширование, push |
|
||||
| 🎵 Музыкальный плеер | Аудио, фоновое воспроизведение, UI |
|
||||
|
||||
---
|
||||
|
||||
## Ресурсы — Каталог
|
||||
|
||||
### 📖 Документация (читать первым делом)
|
||||
|
||||
| Ресурс | Описание |
|
||||
|--------|----------|
|
||||
| [dart.dev](https://dart.dev/) | Официальная документация Dart |
|
||||
| [docs.flutter.dev](https://docs.flutter.dev/) | Официальная документация Flutter |
|
||||
| [pub.dev](https://pub.dev/) | Репозиторий пакетов (как npm/nuget) |
|
||||
| [Flutter API Reference](https://api.flutter.dev/) | Полный API reference |
|
||||
| [Material 3 Guidelines](https://m3.material.io/) | Гайдлайны Material Design |
|
||||
|
||||
### 📹 YouTube каналы
|
||||
|
||||
| Канал | Описание |
|
||||
|-------|----------|
|
||||
| [Flutter Official](https://www.youtube.com/@flutterdev) | Widget of the Week, Decoding Flutter |
|
||||
| [Fireship](https://www.youtube.com/@Fireship) | Быстрые обзоры, "in 100 seconds" |
|
||||
| [Vandad Nahavandipoor](https://www.youtube.com/@VandadNP) | Google Developer Expert, подробные курсы |
|
||||
| [Reso Coder](https://www.youtube.com/@ResoCoder) | Clean Architecture, TDD, BLoC |
|
||||
| [Mitch Koko](https://www.youtube.com/@createdbykoko) | Практичные проекты от 0 до деплоя |
|
||||
| [Code With Andrea](https://www.youtube.com/@CodeWithAndrea) | Riverpod, архитектура, best practices |
|
||||
| [The Flutter Way](https://www.youtube.com/@TheFlutterWay) | Красивые UI клоны |
|
||||
| [dbestech](https://www.youtube.com/@daboratechltd) | Полные проекты с бэкендом |
|
||||
| [Johannes Milke](https://www.youtube.com/@JohannesMilke) | Короткие туториалы по конкретным фичам |
|
||||
| [freeCodeCamp](https://www.youtube.com/@freecodecamp) | Длинные полные курсы (37+ часов) |
|
||||
|
||||
### 📚 Бесплатные курсы и туториалы
|
||||
|
||||
| Ресурс | Описание |
|
||||
|--------|----------|
|
||||
| [Flutter Codelabs](https://docs.flutter.dev/codelabs) | Пошаговые лабы от Google |
|
||||
| [Dart Codelabs](https://dart.dev/codelabs) | Интерактивные упражнения по Dart |
|
||||
| [Flutter Apprentice (raywenderlich)](https://www.kodeco.com/flutter) | Бесплатные статьи и туториалы |
|
||||
| [Flutter Gems](https://fluttergems.dev/) | Каталог полезных пакетов по категориям |
|
||||
| [Awesome Flutter](https://github.com/Solido/awesome-flutter) | Кураторский список ресурсов на GitHub |
|
||||
| [Flutter Examples](https://github.com/nisrulz/flutter-examples) | Сотни примеров кода |
|
||||
| [It's All Widgets](https://itsallwidgets.com/) | Галерея Flutter-приложений с исходниками |
|
||||
|
||||
### 🧰 Инструменты
|
||||
|
||||
| Инструмент | Описание |
|
||||
|------------|----------|
|
||||
| [DartPad](https://dartpad.dev/) | Онлайн-песочница |
|
||||
| [Flutter DevTools](https://docs.flutter.dev/tools/devtools) | Профилирование, отладка, инспектор |
|
||||
| [Very Good CLI](https://github.com/VeryGoodOpenSource/very_good_cli) | Генератор проектов с best practices |
|
||||
| [Mason](https://github.com/felangel/mason) | Шаблоны кода (как Yeoman) |
|
||||
| [Widgetbook](https://www.widgetbook.io/) | Storybook для Flutter виджетов |
|
||||
|
||||
### 📦 Must-have пакеты
|
||||
|
||||
| Пакет | Категория | Описание |
|
||||
|-------|-----------|----------|
|
||||
| `riverpod` | State Management | Реактивное управление состоянием |
|
||||
| `go_router` | Навигация | Декларативный роутинг |
|
||||
| `dio` | Networking | HTTP-клиент |
|
||||
| `freezed` | Code Generation | Immutable модели |
|
||||
| `json_serializable` | Serialization | JSON ↔ Dart |
|
||||
| `hive` | Storage | NoSQL БД |
|
||||
| `drift` | Storage | SQLite ORM |
|
||||
| `get_it` | DI | Service locator |
|
||||
| `injectable` | DI | Кодогенерация для get_it |
|
||||
| `flutter_hooks` | UI | React-style hooks |
|
||||
| `cached_network_image` | UI | Кэширование картинок |
|
||||
| `flutter_svg` | UI | SVG поддержка |
|
||||
| `intl` | i18n | Локализация |
|
||||
| `mocktail` | Testing | Мокирование |
|
||||
|
||||
---
|
||||
|
||||
## 💡 Советы от опытного разработчика к опытному
|
||||
|
||||
1. **Не читай — делай.** С опытом в C#/Go/JS ты быстро схватишь синтаксис. Открывай DartPad, пиши код.
|
||||
|
||||
2. **Flutter ≠ React Native.** Здесь нет DOM. Всё — виджеты. Widget tree пересоздаётся каждый кадр (Flutter рендерит как игровой движок).
|
||||
|
||||
3. **`const` everywhere.** Flutter использует `const` конструкторы для оптимизации rebuilds. Привыкай.
|
||||
|
||||
4. **Riverpod > Provider** для новых проектов. Provider legacy, Riverpod — его автор переосмыслил подход.
|
||||
|
||||
5. **Не бойся кодогенерации.** `build_runner` — это норма. `freezed` + `json_serializable` сэкономят тонны boilerplate.
|
||||
|
||||
6. **Декомпозиция виджетов.** Если `build()` больше 50 строк — разбивай. Extract widget > extract method.
|
||||
|
||||
7. **DevTools — твой друг.** Widget Inspector, Performance, Network — используй с первого дня.
|
||||
|
||||
8. **Dart — это не JavaScript.** Null safety строгий. Sound typing. Не борись с системой типов — используй её.
|
||||
|
||||
---
|
||||
|
||||
## 📊 Timeline Summary
|
||||
|
||||
| Этап | Тема | Часы | Недели |
|
||||
|------|------|------|--------|
|
||||
| 1 | Dart | 8–12 | 1 |
|
||||
| 2 | Flutter основы | 16–20 | 2 |
|
||||
| 3 | Навигация и архитектура | 12–15 | 1.5 |
|
||||
| 4 | State Management | 16–20 | 2 |
|
||||
| 5 | Работа с данными | 16–20 | 2 |
|
||||
| 6 | UI мастерство | 12–15 | 1.5 |
|
||||
| 7 | Нативные возможности | 8–10 | 1 |
|
||||
| 8 | Тестирование | 8–10 | 1 |
|
||||
| 9 | Публикация | 6–8 | 1 |
|
||||
| 10 | Реальный проект | 40–60 | 4–6 |
|
||||
| **Итого** | | **~140–190** | **~17–19** |
|
||||
|
||||
> При 8–10 часах в неделю = **~4–5 месяцев** до первого приложения в store 🎯
|
||||
|
||||
---
|
||||
|
||||
*Создано: 2026-03-26 | Автор: Cosmo ✨*
|
||||
*Последнее обновление: 2026-03-26*
|
||||
Reference in New Issue
Block a user