602 lines
23 KiB
Markdown
602 lines
23 KiB
Markdown
|
|
# План адаптации дизайна веб-приложения mnemo_cards_web_v2
|
|||
|
|
|
|||
|
|
**Цель**: Адаптировать дизайн веб-приложения `mnemo_cards_web_v2`, чтобы он был визуально похож на мобильное приложение `mnemo_cards`.
|
|||
|
|
|
|||
|
|
**Дата создания**: 19 октября 2025
|
|||
|
|
**Статус**: План
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 Анализ текущего состояния
|
|||
|
|
|
|||
|
|
### Мобильное приложение (mnemo_cards)
|
|||
|
|
**Ключевые особенности дизайна:**
|
|||
|
|
|
|||
|
|
1. **Цветовая схема**:
|
|||
|
|
- Черно-белая основа (black/white primary)
|
|||
|
|
- Кастомные акцентные цвета: peach, golden, green
|
|||
|
|
- Специальные цвета: progressBlue, menuBlue, backgroundBlue, borderGray
|
|||
|
|
- Использует MaterialColor для создания палитр
|
|||
|
|
|
|||
|
|
2. **Типографика**:
|
|||
|
|
- Шрифт: `Nunito`
|
|||
|
|
- Все тексты жирные: `FontWeight.w700` для всех стилей
|
|||
|
|
- Использует flutter_screenutil для адаптивных размеров
|
|||
|
|
|
|||
|
|
3. **Карточки паков**:
|
|||
|
|
- Горизонтальная компоновка (Row)
|
|||
|
|
- Изображение слева (квадратное, равно высоте карточки)
|
|||
|
|
- Информация справа (title, subtitle, количество карточек)
|
|||
|
|
- Граница с цветом пака (`border: Border.all(color: pack.color)`)
|
|||
|
|
- Скругленные углы (12.0)
|
|||
|
|
- Прозрачный фон карточки
|
|||
|
|
- Высота: ~110.h
|
|||
|
|
|
|||
|
|
4. **UI компоненты**:
|
|||
|
|
- RefreshIndicator с кастомным цветом
|
|||
|
|
- Простые границы и минималистичный дизайн
|
|||
|
|
- Иконки из webp файлов
|
|||
|
|
- Loading состояния с изображениями (cerdo/luna)
|
|||
|
|
|
|||
|
|
5. **Профиль**:
|
|||
|
|
- UserStatistics виджет со списком слов
|
|||
|
|
- Прогресс-бары для каждого слова
|
|||
|
|
- SimpleTile компоненты с Divider'ами
|
|||
|
|
- Золотой цвет для выученных слов
|
|||
|
|
|
|||
|
|
### Веб-приложение (mnemo_cards_web_v2)
|
|||
|
|
**Текущий дизайн:**
|
|||
|
|
|
|||
|
|
1. **Цветовая схема**:
|
|||
|
|
- Material 3 с синим seedColor
|
|||
|
|
- Стандартная палитра Material
|
|||
|
|
- Отсутствуют кастомные акцентные цвета
|
|||
|
|
|
|||
|
|
2. **Типографика**:
|
|||
|
|
- Шрифт: `Nunito` ✅
|
|||
|
|
- Стандартные весы шрифтов Material
|
|||
|
|
|
|||
|
|
3. **Карточки паков**:
|
|||
|
|
- Вертикальная компоновка (Column)
|
|||
|
|
- Изображение сверху (AspectRatio 16:9)
|
|||
|
|
- Информация снизу
|
|||
|
|
- Стандартные Material Card с elevation
|
|||
|
|
- Hero анимация ✅
|
|||
|
|
|
|||
|
|
4. **UI компоненты**:
|
|||
|
|
- Material 3 компоненты
|
|||
|
|
- Shimmer loading states ✅
|
|||
|
|
- Современный responsive дизайн ✅
|
|||
|
|
|
|||
|
|
5. **Профиль**:
|
|||
|
|
- Продвинутый дизайн со статистикой
|
|||
|
|
- StatsCard компоненты
|
|||
|
|
- SimpleChart для графиков
|
|||
|
|
- Settings card с темной темой
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 Этапы адаптации
|
|||
|
|
|
|||
|
|
### Этап 1: Обновление цветовой схемы и темизации
|
|||
|
|
|
|||
|
|
**Приоритет**: 🔴 Высокий
|
|||
|
|
**Время**: 2-3 часа
|
|||
|
|
**Сложность**: Средняя
|
|||
|
|
|
|||
|
|
#### Задачи:
|
|||
|
|
|
|||
|
|
1. **Создать файл с цветовыми константами** (`lib/presentation/theme/app_colors.dart`):
|
|||
|
|
```dart
|
|||
|
|
// Точные цвета из мобильного приложения
|
|||
|
|
const Color peach = Color(0xffffc994);
|
|||
|
|
const Color golden = Color(0xffffea00);
|
|||
|
|
const Color green = Color(0xff3d5309);
|
|||
|
|
const Color greenAccent = Color(0xff688d11);
|
|||
|
|
const Color black = Color(0xff000000);
|
|||
|
|
const Color white = Color(0xffffffff);
|
|||
|
|
const Color progressBlue = Color(0xff8CCBFF);
|
|||
|
|
const Color menuBlue = Color(0xff99C4E9);
|
|||
|
|
const Color backgroundBlue = Color(0xFFf0f0f0);
|
|||
|
|
const Color testBlue = Color(0xffD0EAFF);
|
|||
|
|
const Color borderGray = Color(0xffABABAB);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **Обновить `app_theme.dart`**:
|
|||
|
|
- Изменить ColorScheme на черно-белую основу
|
|||
|
|
- Светлая тема:
|
|||
|
|
- primary: MaterialColor(0xFF000000, colorMap)
|
|||
|
|
- surface: white
|
|||
|
|
- onSurface: black
|
|||
|
|
- secondary: green
|
|||
|
|
- Темная тема:
|
|||
|
|
- primary: MaterialColor(0xFFFFFFFF, whiteColorMap)
|
|||
|
|
- surface: black
|
|||
|
|
- onSurface: white
|
|||
|
|
- secondary: lightBlue
|
|||
|
|
|
|||
|
|
3. **Обновить TextTheme**:
|
|||
|
|
- Установить `FontWeight.w700` для всех стилей текста
|
|||
|
|
- Сохранить Nunito шрифт
|
|||
|
|
|
|||
|
|
4. **Обновить компонентные темы**:
|
|||
|
|
- AppBarTheme: иконки с primary цветом
|
|||
|
|
- CardTheme: скругление 12.0, минимальная elevation
|
|||
|
|
- ButtonTheme: жирные тексты
|
|||
|
|
|
|||
|
|
**Файлы для изменения**:
|
|||
|
|
- ✏️ `lib/presentation/theme/app_theme.dart`
|
|||
|
|
- ➕ `lib/presentation/theme/app_colors.dart`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Этап 2: Адаптация карточек паков (PackCard)
|
|||
|
|
|
|||
|
|
**Приоритет**: 🔴 Высокий
|
|||
|
|
**Время**: 3-4 часа
|
|||
|
|
**Сложность**: Высокая
|
|||
|
|
|
|||
|
|
#### Задачи:
|
|||
|
|
|
|||
|
|
1. **Изменить компоновку PackCard на горизонтальную**:
|
|||
|
|
- Изменить Column на Row
|
|||
|
|
- Левая часть: квадратное изображение (height = width)
|
|||
|
|
- Правая часть: информация о паке
|
|||
|
|
|
|||
|
|
2. **Обновить стиль карточки**:
|
|||
|
|
- Удалить elevation из Card
|
|||
|
|
- Добавить Border.all с цветом пака
|
|||
|
|
- Сделать фон прозрачным или белым
|
|||
|
|
- Скругление: 12.0
|
|||
|
|
|
|||
|
|
3. **Добавить парсинг цвета пака**:
|
|||
|
|
- Использовать `pack.color?.asColor` из мобильного приложения
|
|||
|
|
- Создать extension для ColorDto
|
|||
|
|
|
|||
|
|
4. **Обновить информацию в карточке**:
|
|||
|
|
- Жирный большой заголовок
|
|||
|
|
- Subtitle светлее
|
|||
|
|
- Иконка карточек с количеством
|
|||
|
|
- Индикатор загрузки (опционально)
|
|||
|
|
|
|||
|
|
5. **Адаптировать высоту**:
|
|||
|
|
- Фиксированная высота ~110-120px
|
|||
|
|
- Квадратное изображение слева
|
|||
|
|
|
|||
|
|
**Файлы для изменения**:
|
|||
|
|
- ✏️ `lib/presentation/widgets/pack_card.dart`
|
|||
|
|
- ➕ `lib/utils/color_extension.dart` (для парсинга цветов)
|
|||
|
|
|
|||
|
|
**Визуальный пример**:
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────┐
|
|||
|
|
│ ┌─────┐ │
|
|||
|
|
│ │ │ Pack Title (bold, large) │
|
|||
|
|
│ │ IMG │ Pack Subtitle (light) │
|
|||
|
|
│ │ │ 🃏 42 cards │
|
|||
|
|
│ └─────┘ │
|
|||
|
|
└─────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Этап 3: Адаптация HomePage (список паков)
|
|||
|
|
|
|||
|
|
**Приоритет**: 🟡 Средний
|
|||
|
|
**Время**: 2 часа
|
|||
|
|
**Сложность**: Низкая
|
|||
|
|
|
|||
|
|
#### Задачи:
|
|||
|
|
|
|||
|
|
1. **Изменить layout с GridView на ListView**:
|
|||
|
|
- Вертикальный список карточек
|
|||
|
|
- Padding: 8.0
|
|||
|
|
|
|||
|
|
2. **Обновить RefreshIndicator**:
|
|||
|
|
- Кастомные цвета (использовать цвет первого пака или primary)
|
|||
|
|
- displacement: 20
|
|||
|
|
|
|||
|
|
3. **Обновить Loading состояние**:
|
|||
|
|
- Опционально: добавить изображение (cerdo/luna) вместо shimmer
|
|||
|
|
- Или оставить shimmer, но адаптировать под горизонтальную карточку
|
|||
|
|
|
|||
|
|
4. **Обновить Search bar**:
|
|||
|
|
- Сделать более минималистичным
|
|||
|
|
- Убрать излишнюю стилизацию
|
|||
|
|
|
|||
|
|
**Файлы для изменения**:
|
|||
|
|
- ✏️ `lib/presentation/pages/home/home_page.dart`
|
|||
|
|
- ✏️ `lib/presentation/widgets/loading/pack_card_shimmer.dart`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Этап 4: Адаптация GamesPage и GameCard
|
|||
|
|
|
|||
|
|
**Приоритет**: 🟡 Средний
|
|||
|
|
**Время**: 2-3 часа
|
|||
|
|
**Сложность**: Средняя
|
|||
|
|
|
|||
|
|
#### Задачи:
|
|||
|
|
|
|||
|
|
1. **Обновить GameCard под стиль мобильного**:
|
|||
|
|
- Возможно также сделать горизонтальную компоновку
|
|||
|
|
- Или оставить вертикальную, но обновить стили
|
|||
|
|
- Добавить границы с цветом игры
|
|||
|
|
- Использовать кастомные цвета
|
|||
|
|
|
|||
|
|
2. **Обновить GamesPage**:
|
|||
|
|
- Изменить layout (Grid или List в зависимости от выбора)
|
|||
|
|
- Обновить RefreshIndicator
|
|||
|
|
- Адаптировать Loading состояния
|
|||
|
|
|
|||
|
|
3. **Обновить shimmer для GameCard**
|
|||
|
|
|
|||
|
|
**Файлы для изменения**:
|
|||
|
|
- ✏️ `lib/presentation/widgets/game_card.dart`
|
|||
|
|
- ✏️ `lib/presentation/pages/games/games_page.dart`
|
|||
|
|
- ✏️ `lib/presentation/widgets/loading/game_card_shimmer.dart`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Этап 5: Адаптация ProfilePage
|
|||
|
|
|
|||
|
|
**Приоритет**: 🟢 Низкий
|
|||
|
|
**Время**: 3-4 часа
|
|||
|
|
**Сложность**: Средняя
|
|||
|
|
|
|||
|
|
#### Задачи:
|
|||
|
|
|
|||
|
|
1. **Упростить дизайн профиля**:
|
|||
|
|
- Убрать или упростить статистические карточки
|
|||
|
|
- Добавить UserStatistics компонент (или его аналог)
|
|||
|
|
- Использовать SimpleTile стиль с Divider'ами
|
|||
|
|
|
|||
|
|
2. **Обновить статистику**:
|
|||
|
|
- Показывать список изученных слов с прогрессом
|
|||
|
|
- Использовать HorizontalProgressWidget
|
|||
|
|
- Золотой цвет для выученных слов
|
|||
|
|
|
|||
|
|
3. **Обновить Settings секцию**:
|
|||
|
|
- Более простой стиль с dividers
|
|||
|
|
- Минималистичные иконки
|
|||
|
|
|
|||
|
|
4. **Обновить logout кнопку**:
|
|||
|
|
- Более простой стиль
|
|||
|
|
|
|||
|
|
**Файлы для изменения**:
|
|||
|
|
- ✏️ `lib/presentation/pages/profile/profile_page.dart`
|
|||
|
|
- ✏️ `lib/presentation/widgets/stats_card.dart` (упростить или удалить)
|
|||
|
|
- ➕ `lib/presentation/widgets/simple_tile.dart` (создать)
|
|||
|
|
- ➕ `lib/presentation/widgets/horizontal_progress.dart` (создать)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Этап 6: Адаптация PackDetailsPage
|
|||
|
|
|
|||
|
|
**Приоритет**: 🟢 Низкий
|
|||
|
|
**Время**: 2 часа
|
|||
|
|
**Сложность**: Низкая
|
|||
|
|
|
|||
|
|
#### Задачи:
|
|||
|
|
|
|||
|
|
1. **Упростить дизайн деталей пака**:
|
|||
|
|
- Убрать излишнюю стилизацию
|
|||
|
|
- Использовать границы вместо elevation
|
|||
|
|
- Адаптировать под минималистичный стиль
|
|||
|
|
|
|||
|
|
2. **Обновить список карточек**:
|
|||
|
|
- Более простой стиль ListTile
|
|||
|
|
- Границы вместо карточек
|
|||
|
|
|
|||
|
|
**Файлы для изменения**:
|
|||
|
|
- ✏️ `lib/presentation/pages/pack_details/pack_details_page.dart`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Этап 7: Адаптация общих компонентов
|
|||
|
|
|
|||
|
|
**Приоритет**: 🟡 Средний
|
|||
|
|
**Время**: 2-3 часа
|
|||
|
|
**Сложность**: Низкая
|
|||
|
|
|
|||
|
|
#### Задачи:
|
|||
|
|
|
|||
|
|
1. **Обновить MainShell** (нижняя навигация):
|
|||
|
|
- Адаптировать стили под новую тему
|
|||
|
|
- Проверить цвета иконок
|
|||
|
|
|
|||
|
|
2. **Обновить AuthPage**:
|
|||
|
|
- Упростить дизайн кнопок
|
|||
|
|
- Использовать новую цветовую схему
|
|||
|
|
|
|||
|
|
3. **Обновить ErrorView и LoadingView**:
|
|||
|
|
- Адаптировать под новую тему
|
|||
|
|
- Опционально: добавить кастомные изображения для ошибок
|
|||
|
|
|
|||
|
|
4. **Создать общие утилиты**:
|
|||
|
|
- ColorExtension для парсинга ColorDto
|
|||
|
|
- Дополнительные helper'ы
|
|||
|
|
|
|||
|
|
**Файлы для изменения**:
|
|||
|
|
- ✏️ `lib/presentation/widgets/main_shell.dart`
|
|||
|
|
- ✏️ `lib/presentation/pages/auth/auth_page.dart`
|
|||
|
|
- ✏️ `lib/presentation/widgets/error_view.dart`
|
|||
|
|
- ✏️ `lib/presentation/widgets/loading_view.dart`
|
|||
|
|
- ➕ `lib/utils/color_extension.dart`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Этап 8: Адаптация для responsive дизайна
|
|||
|
|
|
|||
|
|
**Приоритет**: 🟢 Низкий
|
|||
|
|
**Время**: 2-3 часа
|
|||
|
|
**Сложность**: Средняя
|
|||
|
|
|
|||
|
|
#### Задачи:
|
|||
|
|
|
|||
|
|
1. **Обновить Responsive утилиты**:
|
|||
|
|
- Адаптировать под новые размеры карточек
|
|||
|
|
- Убедиться, что горизонтальные карточки хорошо смотрятся на разных экранах
|
|||
|
|
|
|||
|
|
2. **Тестирование на разных разрешениях**:
|
|||
|
|
- Mobile (узкий экран)
|
|||
|
|
- Tablet (средний экран)
|
|||
|
|
- Desktop (широкий экран)
|
|||
|
|
|
|||
|
|
3. **Адаптация максимальной ширины контента**:
|
|||
|
|
- Убедиться, что карточки не слишком широкие на больших экранах
|
|||
|
|
|
|||
|
|
**Файлы для изменения**:
|
|||
|
|
- ✏️ `lib/utils/responsive.dart`
|
|||
|
|
- ✏️ Все страницы с использованием responsive логики
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Этап 9: Финальная полировка и тестирование
|
|||
|
|
|
|||
|
|
**Приоритет**: 🔴 Высокий
|
|||
|
|
**Время**: 2-3 часа
|
|||
|
|
**Сложность**: Низкая
|
|||
|
|
|
|||
|
|
#### Задачи:
|
|||
|
|
|
|||
|
|
1. **Проверка консистентности**:
|
|||
|
|
- Все цвета соответствуют мобильному приложению
|
|||
|
|
- Все шрифты жирные где нужно
|
|||
|
|
- Все границы используют правильные цвета
|
|||
|
|
|
|||
|
|
2. **Темная тема**:
|
|||
|
|
- Проверить, что темная тема работает корректно
|
|||
|
|
- Адаптировать все компоненты под темную тему
|
|||
|
|
|
|||
|
|
3. **Accessibility**:
|
|||
|
|
- Проверить контрастность цветов
|
|||
|
|
- Обновить Semantics labels если нужно
|
|||
|
|
|
|||
|
|
4. **Тестирование**:
|
|||
|
|
- Визуальное тестирование всех экранов
|
|||
|
|
- Проверка анимаций и переходов
|
|||
|
|
- Unit тесты для новых компонентов
|
|||
|
|
|
|||
|
|
5. **Документация**:
|
|||
|
|
- Обновить README с информацией о дизайне
|
|||
|
|
- Создать DESIGN_GUIDE.md с примерами компонентов
|
|||
|
|
|
|||
|
|
**Файлы для проверки**:
|
|||
|
|
- Все обновленные файлы
|
|||
|
|
- Тесты
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📁 Структура новых файлов
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
lib/
|
|||
|
|
├── presentation/
|
|||
|
|
│ ├── theme/
|
|||
|
|
│ │ ├── app_theme.dart ✏️ Обновить
|
|||
|
|
│ │ └── app_colors.dart ➕ Создать
|
|||
|
|
│ ├── widgets/
|
|||
|
|
│ │ ├── pack_card.dart ✏️ Полностью переделать
|
|||
|
|
│ │ ├── game_card.dart ✏️ Обновить
|
|||
|
|
│ │ ├── simple_tile.dart ➕ Создать
|
|||
|
|
│ │ ├── horizontal_progress.dart ➕ Создать
|
|||
|
|
│ │ └── loading/
|
|||
|
|
│ │ ├── pack_card_shimmer.dart ✏️ Обновить под горизонтальную карточку
|
|||
|
|
│ │ └── game_card_shimmer.dart ✏️ Обновить
|
|||
|
|
│ └── pages/
|
|||
|
|
│ ├── home/
|
|||
|
|
│ │ └── home_page.dart ✏️ Изменить layout
|
|||
|
|
│ ├── games/
|
|||
|
|
│ │ └── games_page.dart ✏️ Обновить стили
|
|||
|
|
│ ├── profile/
|
|||
|
|
│ │ └── profile_page.dart ✏️ Упростить дизайн
|
|||
|
|
│ └── pack_details/
|
|||
|
|
│ └── pack_details_page.dart ✏️ Упростить
|
|||
|
|
├── utils/
|
|||
|
|
│ └── color_extension.dart ➕ Создать
|
|||
|
|
└── assets/ ➕ Опционально
|
|||
|
|
└── images/
|
|||
|
|
├── cerdo.webp ➕ Копировать из мобильного
|
|||
|
|
└── luna.webp ➕ Копировать из мобильного
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎨 Ключевые изменения дизайна
|
|||
|
|
|
|||
|
|
### До и После:
|
|||
|
|
|
|||
|
|
#### 1. Цветовая схема
|
|||
|
|
**До**: Material 3 синяя палитра
|
|||
|
|
**После**: Черно-белая основа с акцентными цветами (golden, green, peach)
|
|||
|
|
|
|||
|
|
#### 2. Карточки паков
|
|||
|
|
**До**: Вертикальные карточки с изображением 16:9 сверху
|
|||
|
|
**После**: Горизонтальные карточки с квадратным изображением слева и границей цвета пака
|
|||
|
|
|
|||
|
|
#### 3. Типографика
|
|||
|
|
**До**: Стандартные веса шрифтов Material
|
|||
|
|
**После**: Все тексты жирные (FontWeight.w700)
|
|||
|
|
|
|||
|
|
#### 4. UI компоненты
|
|||
|
|
**До**: Material 3 elevation, стандартные карточки
|
|||
|
|
**После**: Минималистичный дизайн с границами, без elevation
|
|||
|
|
|
|||
|
|
#### 5. Профиль
|
|||
|
|
**До**: Продвинутая статистика с графиками и карточками
|
|||
|
|
**После**: Простой список слов с прогрессом, SimpleTile компоненты
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚠️ Важные замечания
|
|||
|
|
|
|||
|
|
1. **Сохранить функциональность**:
|
|||
|
|
- Все существующие функции должны работать
|
|||
|
|
- Hero анимации сохранить
|
|||
|
|
- RefreshIndicator сохранить
|
|||
|
|
|
|||
|
|
2. **Responsive дизайн**:
|
|||
|
|
- Убедиться, что горизонтальные карточки хорошо смотрятся на всех экранах
|
|||
|
|
- На очень узких экранах возможно нужно адаптировать размеры
|
|||
|
|
|
|||
|
|
3. **Тестирование**:
|
|||
|
|
- Обновить тесты для новых компонентов
|
|||
|
|
- Проверить, что старые тесты проходят
|
|||
|
|
|
|||
|
|
4. **Темная тема**:
|
|||
|
|
- Особое внимание к темной теме
|
|||
|
|
- Проверить контрастность
|
|||
|
|
|
|||
|
|
5. **Assets**:
|
|||
|
|
- Возможно понадобится скопировать иконки из мобильного приложения
|
|||
|
|
- Добавить cerdo.webp и luna.webp для loading состояний
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 Приоритизация этапов
|
|||
|
|
|
|||
|
|
### Критический путь (начать с этого):
|
|||
|
|
1. **Этап 1**: Цветовая схема и темизация
|
|||
|
|
2. **Этап 2**: Адаптация PackCard (самое заметное изменение)
|
|||
|
|
3. **Этап 3**: Адаптация HomePage
|
|||
|
|
|
|||
|
|
### Средний приоритет:
|
|||
|
|
4. **Этап 4**: GamesPage и GameCard
|
|||
|
|
5. **Этап 7**: Общие компоненты
|
|||
|
|
6. **Этап 5**: ProfilePage
|
|||
|
|
|
|||
|
|
### Низкий приоритет (можно отложить):
|
|||
|
|
7. **Этап 6**: PackDetailsPage
|
|||
|
|
8. **Этап 8**: Responsive адаптация
|
|||
|
|
9. **Этап 9**: Финальная полировка
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 Порядок выполнения
|
|||
|
|
|
|||
|
|
### День 1 (4-5 часов):
|
|||
|
|
- Этап 1: Цветовая схема (2-3 часа)
|
|||
|
|
- Этап 2: PackCard начать (2 часа)
|
|||
|
|
|
|||
|
|
### День 2 (4-5 часов):
|
|||
|
|
- Этап 2: PackCard завершить (2 часа)
|
|||
|
|
- Этап 3: HomePage (2 часа)
|
|||
|
|
- Тестирование (1 час)
|
|||
|
|
|
|||
|
|
### День 3 (4-5 часов):
|
|||
|
|
- Этап 4: GamesPage (2-3 часа)
|
|||
|
|
- Этап 7: Общие компоненты (2 часа)
|
|||
|
|
|
|||
|
|
### День 4 (3-4 часа):
|
|||
|
|
- Этап 5: ProfilePage (3 часа)
|
|||
|
|
- Этап 6: PackDetailsPage (1 час)
|
|||
|
|
|
|||
|
|
### День 5 (2-3 часа):
|
|||
|
|
- Этап 8: Responsive (2 часа)
|
|||
|
|
- Этап 9: Финальная полировка (1 час)
|
|||
|
|
|
|||
|
|
**Общее время**: 17-22 часа работы
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 Чек-лист выполнения
|
|||
|
|
|
|||
|
|
### Этап 1: Цветовая схема
|
|||
|
|
- [ ] Создан app_colors.dart с константами
|
|||
|
|
- [ ] Обновлен app_theme.dart (светлая тема)
|
|||
|
|
- [ ] Обновлен app_theme.dart (темная тема)
|
|||
|
|
- [ ] Все тексты жирные (FontWeight.w700)
|
|||
|
|
- [ ] Проверено на обоих темах
|
|||
|
|
|
|||
|
|
### Этап 2: PackCard
|
|||
|
|
- [ ] Изменена компоновка на горизонтальную
|
|||
|
|
- [ ] Добавлена граница с цветом пака
|
|||
|
|
- [ ] Создан ColorExtension для парсинга
|
|||
|
|
- [ ] Обновлена информация в карточке
|
|||
|
|
- [ ] Hero анимация работает
|
|||
|
|
|
|||
|
|
### Этап 3: HomePage
|
|||
|
|
- [ ] Изменен GridView на ListView
|
|||
|
|
- [ ] Обновлен RefreshIndicator
|
|||
|
|
- [ ] Обновлен PackCardShimmer
|
|||
|
|
- [ ] Проверена прокрутка и загрузка
|
|||
|
|
|
|||
|
|
### Этап 4: GamesPage
|
|||
|
|
- [ ] Обновлен GameCard
|
|||
|
|
- [ ] Обновлен GamesPage layout
|
|||
|
|
- [ ] Обновлен GameCardShimmer
|
|||
|
|
- [ ] Проверена функциональность
|
|||
|
|
|
|||
|
|
### Этап 5: ProfilePage
|
|||
|
|
- [ ] Упрощен дизайн
|
|||
|
|
- [ ] Создан SimpleTile компонент
|
|||
|
|
- [ ] Создан HorizontalProgress (опционально)
|
|||
|
|
- [ ] Обновлена статистика
|
|||
|
|
|
|||
|
|
### Этап 6: PackDetailsPage
|
|||
|
|
- [ ] Упрощен дизайн
|
|||
|
|
- [ ] Обновлен список карточек
|
|||
|
|
- [ ] Проверена функциональность
|
|||
|
|
|
|||
|
|
### Этап 7: Общие компоненты
|
|||
|
|
- [ ] Обновлен MainShell
|
|||
|
|
- [ ] Обновлен AuthPage
|
|||
|
|
- [ ] Обновлены ErrorView/LoadingView
|
|||
|
|
- [ ] Созданы утилиты
|
|||
|
|
|
|||
|
|
### Этап 8: Responsive
|
|||
|
|
- [ ] Проверено на mobile
|
|||
|
|
- [ ] Проверено на tablet
|
|||
|
|
- [ ] Проверено на desktop
|
|||
|
|
- [ ] Адаптированы размеры
|
|||
|
|
|
|||
|
|
### Этап 9: Финальная полировка
|
|||
|
|
- [ ] Проверена консистентность
|
|||
|
|
- [ ] Проверена темная тема
|
|||
|
|
- [ ] Проверена accessibility
|
|||
|
|
- [ ] Все тесты проходят
|
|||
|
|
- [ ] Обновлена документация
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 Ожидаемый результат
|
|||
|
|
|
|||
|
|
После выполнения всех этапов веб-приложение `mnemo_cards_web_v2` будет визуально похоже на мобильное приложение `mnemo_cards`:
|
|||
|
|
|
|||
|
|
- ✅ Идентичная цветовая схема (черно-белая с акцентами)
|
|||
|
|
- ✅ Жирные шрифты Nunito
|
|||
|
|
- ✅ Горизонтальные карточки паков с границами
|
|||
|
|
- ✅ Минималистичный дизайн без лишних elevation
|
|||
|
|
- ✅ Упрощенный профиль со статистикой
|
|||
|
|
- ✅ Консистентный UI на всех экранах
|
|||
|
|
- ✅ Работающая темная тема
|
|||
|
|
- ✅ Сохраненная функциональность (авторизация, навигация, загрузка данных)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Автор плана**: AI Assistant
|
|||
|
|
**Дата**: 19 октября 2025
|
|||
|
|
**Версия**: 1.0
|
|||
|
|
|