From 5919c0123e4c057dc6e1a51efb3bec3f3806103e Mon Sep 17 00:00:00 2001 From: Cosmo Date: Thu, 26 Mar 2026 08:18:37 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=B1=20Add=20Flutter=20&=20Dart=20learn?= =?UTF-8?q?ing=20roadmap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Flutter/Roadmap.md | 543 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 543 insertions(+) create mode 100644 Flutter/Roadmap.md diff --git a/Flutter/Roadmap.md b/Flutter/Roadmap.md new file mode 100644 index 0000000..88c897a --- /dev/null +++ b/Flutter/Roadmap.md @@ -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//{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*