Skip to content

artembark/friflex_weather_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c017c8a · Aug 10, 2022

History

22 Commits
Aug 4, 2022
Aug 4, 2022
Aug 6, 2022
Aug 4, 2022
Aug 6, 2022
Aug 6, 2022
Aug 4, 2022
Aug 4, 2022
Aug 4, 2022
Aug 10, 2022
Aug 6, 2022
Aug 4, 2022
Aug 5, 2022
Aug 5, 2022

Repository files navigation

Weather App for Friflex

NOTE! Версия, реализованная к моменту отправки на hr@friflex.com в ветке master, дополнительный рефакторинг, продолжение тестов в ветке develop.

Тестовое приложение для получения текущей погоды и прогноза погоды на 3 дня.

Код приложения покрыт комментариями и юнит-тестами.

После клонирования выполнить:

flutter pub get
flutter pub run build_runner build --delete-conflicting-outputs

В приложении реализованы:

  • работа с двумя запросами API погоды: запрос текущей погоды, запрос прогноза погоды на 3 дня с интервалом 3 часа
  • отображение экрана текущей погоды с иконкой соответствующего состояния погоды, текстового описания состояния погоды, температуры, влажности, скорости ветра и даты актуальности прогноза
  • отображение экрана списка прогнозов погоды на 3 дня с интервалом 3 часа с сортировкой прогнозов погоды по температуре, начиная с самого холодного прогноза и отображающих иконку соответствующего состояния погоды, текстовое описания состояния погоды, температуру, влажность, сокрость ветра
  • поле ввода валидирует вводимый текст по длине символов и при подтверждении пустого поля ввода отображается текст ошибки
  • использована библиотека для получения состояния интернет-соединения connectivity_plus и при всех интернет запросах проверяется состояние сети
  • последнее введенное значение города сохраняется в системных настройках и при следующем входе открвается сразу экран текущей погоды
  • помимо обычной ошибки получения данных, отдельно выделена ошибка, сообщающая о невозможности найти запрошенный город в базе
  • для управлением состоянием используется библиотека flutter_bloc
  • для зависимостей используется библиотека get_it
  • структура проекта разбита по слоям, без фич. Три слоя - data, domain, presentation
  • для dto использована библиотека freezed, для кодогенерации классов - удобно так как сразу получаем и кодогенерацию для методов fromJson и также переопределяем опрератор сравнения и хэшкода, что нужно при тестировании для сравнения объектов
  • классы entity имплементируют Equatable для возможности сравнивать объекты при написании тестов
  • для преобразования dto в entity используются мапперы посредством расширения функций. С помощью мапперов можно изменить тип данных при переходе от dto к entity

Скриншоты экранов и возможных ошибок

menu menu menu menu menu menu menu menu menu

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages