Skip to content

Lixa141/olympian-flutter-test

 
 

Repository files navigation

Тестовое задание на позицию Flutter-разработчика

Это тестовое задание на вакансию ведущего Flutter разработчика в компанию One Clue. У вас должен быть практический опыт разработки приложений. В этой задаче я ожидаю умение погружаться в существующий проект, реализовывать новую логику в существующем приложения и формулировать свои мыли и решения в текстовом виде. Для разработки обязательно иметь установленный эмулятор iOS либо реальное устройство.

Задача

Необходимо добавить анимацию на игровое поле. Анимация должна отображаться до того момента как слово угадают. Screen как должно выглядеть

Что сделать:

  1. Развернуть приложение на локальном окружении, запустить на ios в эмуляторе или реальном устройстве. После установке при нажатии на кнопку Play вы должны оказаться на экране с 3мя дощечками.

  2. Добавить lottie анимацию на экран как показано на изобажении выше (см. Задача). Данная анимация должна появляться только на первом уровне и только на левой верхней дощечке. После того как пользователь отагадает первое слово ("камень", слово может меняться) анимация отображаться не должна.

  3. Обосновать свое решение в текстовом виде, положительные и отрицательные моменты реализации на ваш взгляд. Закоммитить в корневой Readme.

Как реализовано:

  1. Подключен пакет Lottie
  2. Создал виджет TouchAnimation, в котором подключаю необходимую анимацию (Animation.json) и позиционирую её, касательно карточки
  3. Ограничил анимацию согласно условиям

Положительные моменты реализации:

  1. Для ограничения анимации, подтягивается актуальный индекс уровня через context.watch();
  2. Реализация вынесена в виджет для лучшей читаемости кода
  3. Логика отображения анимации вынесена за пределы UI, тем самым делая UI более гибким и независимым друг от друга

Отрицательные моменты реализации:

  1. В идеале - вынести логику в геттеры, либо в функцию за пределы build'a, дабы виджет был более читаемым

Дополнительное задание (опционально):

Сформулиромать в текстовом виде 3 предложения по рефакторингу чтобы вы хотели изменить в приложении, и обоснование почему считаете что это необходимо сделать. Закоммитить в Readme.

Что можно улучшить в проекте:

  1. Перевести управление состоянием на BLoC, дабы упростить работу со state managment'ом и чтобы тот же статус кнопки брался не из enum'ов
  2. Улучшить читаемость кода, разбив виджет на подвиджеты (виджет влезал в экран) и добавить локали (уменьшит число мест допуска ошибок)
  3. Избавиться от warning'ов и hints в проекте (добавить const где нужно, избавиться от print'ов (заменить на throw), нэйминг)

Как выполнять?

  1. Вы можете форкнуть этот репозиторий или клонировать к себе его код
  2. После выполнения задания отправляйте ссылку на ваш репозиторий в телеграм @makarovilya

Ссылки:

  1. Lottie Animation
  2. Preview Lottie Animation
  3. GitHub

About

Test for a flutter developer role in One Clue

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dart 93.4%
  • HTML 3.2%
  • Ruby 1.7%
  • Swift 1.5%
  • Kotlin 0.1%
  • Makefile 0.1%