Приложение на flutter сделанное в рамках дз по курсу Flutter в МФТИ.
Автор: Белов Тимофей Николаевич, Б13-303 \
В рамках стандартного дз реализовано получение и отображение картинок котов с api thecatapi и использование их в окружении подобном тиндеру.
Есть возможность просматривания на отдельной странице своей истории лайков (не сохраняется при закрытии). Также включает удаление и фильтрацию.
Есть поддержка сохранения истории лайков и ее поддержание после закрытия приложения.
Также написаны тесты на data и domain части приложения.
Ссылка на build apk (от 01.05.2025) apk
Исправлен баг на странице с детальным описанием (описание могло вылезать за карточку).
Загрузка изображений в кеш теперь делается через адекватные методы, как и задумывается в библиотеке.
Больше нет модалки, которая говорит об ошибке загрузки с api. Было решено оставить только всплывающее окно об отсутствии интернета.
Написал тест на data часть (object box). Однако для его работы необходимо установить objectbox независимо от flutter проекта. Его можно просто игнорировать в ином случае.
Есть возможность сохранения темы (темная/светлая) между запусками приложения.
Игнорирование картинок с повторяющимся url. Их лайк/дизлайк повторный не будет сохранен.
Описание возможностей приложения.

- Логотип
- Кнопка дизлайков и счетчик дизлайков
- Кнопка лайков и счетчик лайков
- Картинка с api (при клике открывается страница детального описания, может быть свайпнута в любую сторону, вправо - лайк, влево - дизлайк, иначе - просто замена, можно вернуть на изначальную позицию и отменить свайп, тип свайпа не может быть изменен после начала)
- Кнопка изменения светлой и темной темы
- Кнопки выбора api (работает, но было оставленно только одно api)
- Базовой описание полученное с api
- Кнопка перехода на страницу с историей лайков и дизлайков
- Полное изображение, которое было кликнуто
- При клике во вне модалка она закрывается
- Полное описание с api (не все поля с thecatapi отображаются)
- Текстовое поле с вводом фильтра (регистр не учитывается. Требуется, чтобы название породы содержало текст фильтра. Используется только первая порода, упомянутая в ответе api)
- Кнопка отчистки текстового поля
- Номер в списке после фильтрации (шрифт уменьшается при увеличении количества цифр)
- Кнопка с картинкой кота (при наведении есть подсветка)
- Лайк или дизлайк
- Порода (имеет максимальную длину и overflow)
- Время действия (только месяц, день, час, минута) (месяц и день добавлены с расчетом на дальнейшее сохранения истории на диск)
- Кнопка удаления записи (не вызывает скролл в начало)
- Кнопка закрытия страницы с историей
- Кнопка переключения отображения дизлайков
- Кнопка переключения отображения лайков

