Skip to content

PhilipPeric/surf-flutter-study-jam-4

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Surf Flutter Study Jam 4

Требования к приложению

  • Версия Flutter: 3.10.3
  • Версия Dart: 3.0.3

Ваша ветка с выполнением задания называется study-jam-4.

В шаблонном приложении у вас уже есть начальный экран.

В процессе реализации вы можете опираться на этот дизайн.

Эмоджи 🔥 показывает задание повышеной сложности.


Описание фичи

Данное задание взято из новых Flutter-курсов Surf.

Вы, начинающий и наивный фрилансер в поисках своего первого заказа, получаете сообщение на свою почту:

От: Кармелита Честная 
Кому: [Ваше имя]

Тема: Заказ на разработку приложения "Магический Шар"

Здравствуйте,

Моё имя Кармелита Честная и я ищу опытного разработчика для создания мобильного приложения, имитирующего магический шар.

Я верю, что такое приложение может принести много счастья и радости в жизни людей. И я готова поделиться своими богатствами и обещаю удачу в личной жизни тому, кто поможет мне воплотить эту идею в жизнь.

Согласно моим требованиям, приложение должно состоять из одного экрана, на котором будет изображён магический шар. Пользователь мысленно задаёт вопрос, после чего нажимает на шар (или трясёт телефоном), и приложение выдаёт ответ.

С нетерпением жду вашего ответа и возможности начать работу над этим проектом.

С уважением, 
Кармелита Честная

Техническое задание

Источник данных

Вам предстоит отправить запрос на сервер для того, чтобы узнать, что готовит судьба.

Документация API для ознакомления: https://www.eightballapi.com/docs

Базовый URL для отправки запросов: https://eightballapi.com/api

Пример ответа по GET-запросу: {"reading":"My reply is no."}

Флоу работы шара

Начальное состояние

Шар активен, но не имеет текста внутри.

Алгоритм

Сценарий 1
  1. Пользователь нажимает на шар / пользователь трясет телефоном.

  2. Шар начинает затемняется изнутри. Текст предыдущего ответа (если он был) исчезает.

  3. Отправляется запрос на получение ответа шара.

  4. Запрос выполнен...

    • успешно — в шаре текст полученного ответа, затемнение исчезает;

    • неудачно — шар заполняется красным светом.

Сценарий 2

Предусловия: идёт загрузка ответа шара.

  1. Пользователь нажимает на шар / пользователь трясет телефоном.
  2. Ничего не происходит.

Итак, давайте начнём!

Небольшие рекомендации:

  • Не забывайте писать комментарии к классам и методам чтобы другим разработчикам было сразу понятно, что тут происходит. Умение писать понятный код это важный навык для командной разработки.
  • Помните про форматирование кода 👆.

Задание 1

Реализуйте интерфейс экрана с магическим шаром.

Задание 2

Реализуйте бизнес-логику нажатия на шар для получения ответа. Используйте мок-данные для отображения.

Задание 3

Добавьте логику для обработки пользовательского вопроса и получения ответа от API.

При нажатии на шар отправьте GET-запрос к API и получите ответ. Обработайте успешный ответ от API и отобразите его внутри магического шара. Обработайте ошибочный ответ от API и отобразите сообщение об ошибке внутри магического шара.

Задание 4

Реализуйте отправку запроса при тряске телефона.

Для отслеживания тряски можно использовать пакет shake.

Задание 5

Адаптируйте приложения для запуска на десктоп/веб-платформах, а также планшетах.

Задание 6 🔥

Добавьте анимацию движения шара:

  • при обычном состоянии шар должен плавно парить вверх-вниз
  • шар отбрасывает цветную тень
  • при выполнении запроса шар сотрясается и пульсирует светом (или затемняется) внутри

Задание 7 🔥

Добавьте в приложение экран настроек, где вы сможете:

  • менять цвет шара
  • менять скорость и кривую анимации шара в спокойном положении
  • настраивать анимацию шара при тряске

Задание 8 🔥

При выдаче ответа/ошибки можете добавить аудио-эффект для шара.

Если у вас реализован экран настроек - добавьте возможность настройки звука оттуда. 🔥

Также можете добавить возможность выбора звука с устройства. 🔥🔥

Задание 9 🔥

Добавьте воспроизведение ответа с помощью голосового помощника!

Если у вас есть экран настроек - вынесите возможность включения/отключения этой функции туда.

Задание 10 🔥🔥

Анимируйте появление текста внутри шара - например, его плавное проявление из размытия и прозрачности или имитация его печати.

Если у вас реализован экран настроек - добавьте возможность настройки анимации текста туда. 🔥

Задание 11 🔥🔥🔥

Добавьте в ваш шар звёзды и оживите их с помощью параллакс-эффекта!

Задание 12 🔥🔥🔥🔥

Есть интересная идея, как добавить в ваш шар ещё больше магии? Дерзайте!

Что стоит знать при выполнении заданий

  • Вашей целью не является выполнение всех заданий. Выбирайте для выполнения то, что вам по силам и интереснее реализовывать лично для вас.
  • Предоставленный дизайн является только референсом - вам необязательно повторять его в точности. Фантазируйте и делайте так, как вам подсказывает ваше чувство прекрасного 🥰
  • За использованией фичей Dart 3 полагаются дополнительные баллы 🤑.

Предоставление результатов

Умение защитить результаты своей работы - невероятно важный навык для разработчика.

В текущем проекте есть файл /docs/RESULT.md. Этот шаблон нужен как раз для того, чтобы вы могли поделиться результатами вашей работы. Вы можете записать скринкаст, сделать скриншоты или целый README-файл, в котором будет описано, что вы успели сделать.

Это один из критериев, по которому будет оцениваться ваша работа!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dart 46.8%
  • HTML 35.5%
  • Ruby 12.4%
  • Swift 3.7%
  • Kotlin 1.3%
  • Objective-C 0.3%