Пример работы с Unsplash
Архитектура приложения в основном MVP, кроме основного класса main_page (так как логики там и нет практически). Для работы с Api есть одельный класс - api_helper Так же используется DI
В приложении есть:
2 таба:
- Таб просмотра списка изображений, который подгружаются при load_more (Использовал чей-то список, есть свои косяки - нет возможности расширения (нужно ковырять код), но в принципе работает наромально)
- Таб просмотра и поиска изображения по запросу - данного запроса на реализацию нету в ТЗ, но я решил немного поиграться, поексперементировал с search_view и пр.
3 скрина:
- список изображений (- мини изображение с названием и автором - я указываю автора и описание, навзание нет в json-e )
- изображение на весь экран (Думал добавить возможность пролистывать картинки, но не стал заморачиваться - хоть и принципиально ничего сложного не дожно быть, но пришлось бы добавлять список слушателей для дозагрузки данных не несколько скринов одновременно, ну или что-то в этом роде)
- список + поиск
Перед запросамы проводится проверка на наличия коннекта - корявая, но рабочая :) Есть либа (подтянута) которая помогает понять, что из вариантов подключено для коннекта - но связи то всё равно может не быть.
* Также напишите какие (из списка ниже) и как технологии, подходы использовались в вашем тестовом задании*
- Printing to the console - хотел использовать логер (и использовал), но потом решил отказаться
- Asynchronous programming (Futures, async, await) - юзал, запросы и пр.
- reuse of a widget - переиспользую нескольк виджетов - connection_error_widget, image_item_widget
- assets - один ассет есть, картинка для ошибки соединения
- load images over a network - использую CachedNetworkImage
- ThemeData class - вот ксати на счёт темы не подумал
- shared_preferences plugin - а он тут вообще нужен ?
- TabController - сам котроллер не писал - так как использовл стандартную штуку
- Drawer - не добавлял
- http package - юзал
- Animation, AnimationController, FadeTransition, Dismissible - на счёт анимации, ничего не использовал, кроме стандартного перехода по Hero.
assigning variables Checking for null or zero StatefulWidget, StatelessWidget widgets (Layout widgets, ListView) TextStyle Material library widget tree constructor Route, Navigator TabBar, Tab, TabBarView
- это не очень красивая обработка и вывод ошибок связки и загрузки данных ( в некоторой степени, это сязано с виджетом дозагрузки данных)
- так себе дизайн ) ахах
В общей сложности усшло где-то 12 часов Основную часть времени убил на основную логику с ТЗ где-то 8 часов ( пришлось повозиться с отображением изображениий в списке) Остальыные 4 - это доделываине доп. логики (поиск) и обработка разного рода ошибок