Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Effective Mobile — Тестовое задание (Rick and Morty Characters App)

Тестовое задание: "Список персонажей Рика и Морти"


Описание

Мобильное приложение на Flutter, которое загружает список персонажей мультсериала "Рик и Морти" с публичного API.
Приложение позволяет добавлять персонажей в избранное, поддерживает оффлайн-доступ к данным и хранит избранных персонажей в локальной базе данных.

Документация API: Rick and Morty API


Функциональные возможности

1. Главный экран (Список персонажей)

  • Отображение списка персонажей в виде карточек.
  • Карточка персонажа содержит:
    • Изображение персонажа.
    • Имя персонажа.
    • Дополнительные характеристики (статус, вид, локация и т.д.).
    • Кнопка "звездочка" для добавления/удаления из избранного (заполненная — в избранном, пустая — не в избранном).
  • Пагинация: подгрузка новых персонажей при скролле вниз.
  • Кеширование: данные сохраняются локально для работы без интернета.

2. Экран "Избранное"

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

3. Навигация

  • BottomNavigationBar для переключения между экраном персонажей и экраном избранного.

4. Дополнительно

  • Поддержка темной и светлой темы с возможностью переключения.
  • Кастомные анимации при добавлении/удалении персонажей в избранное.

Архитектура и технологии

  • Flutter (Dart)
  • State management: Bloc + Freezed
  • Слои по принципу чистой архитектуры:
    • data — работа с API и локальной базой
    • domain — репозитории и бизнес-логика
    • presentation — экраны, виджеты и bloc
  • Работа с сетью: Dio + Retrofit
  • Локальное хранилище: Hive (для кеша и избранных персонажей)
  • Кодогенерация: Freezed + JsonSerializable

Особенности реализации

  • Реализован Bloc для главного экрана и экрана избранного с отдельными событиями и состояниями.
  • Используется Stream из Hive для отслеживания изменений в избранных персонажах в реальном времени.
  • Поддержка пагинации и кеширования данных.
  • Возможность сортировки и удаления избранных персонажей на экране избранного.
  • Кастомные анимации для плавного добавления и удаления из избранного.
  • Темная и светлая тема с сохранением выбора пользователя.

Установка и запуск

  1. Клонируйте репозиторий:
git clone <repo_url>
cd <repo_folder>
  1. Установите зависимости:
git clone <repo_url>
cd <repo_folder>
  1. Сгенерируйте файлы:
flutter pub run build_runner build --delete-conflicting-outputs
  1. Запустите приложение:
flutter run

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages