Менеджер задач, разработанный в рамках обучения в школе мобильной разработки Яндекса
Основные нововведения:
- Навигация в отдельной сущности TasksNavigation
- Длинные заметки обрезаются
- Добавлена тёмная тема
- Анимации для работы с тасками
- Цвет высокого приоритета меняется через Firebase Remote config
- Работает Firebase Crashlytics
- Настроен CI на Github. Форматирование - линтер - тесты - сборка - деплой
- TaskModel и TaskDto сгенерированы через freezed
- Реализовано два флейвора. prod и dev. Различие в названии приложения
- Приложение распространяется через Firebase App Distribution
- Добавлена и работает аналитика Firebase. Добавление, удаление, выполнение/отмена выполнения таски, переход по экранам
- Поддержка landscape ориентации и больших экранов
Помимо этого также базовый функционал:
- Приложение полноценно работает без интернета. Если добавил/удалил у себя таски, при следующем запуске с интернетом данные на сервере обновятся. Либо можно сделать swipe-to-refresh после подключения интернета для обновления главной страницы. Также, если на сервере произошли какие-то изменения, они подтягиваются в смартфон.
- Добавлен DI
- Работа с данными в репозитории
- Написаны unit-тесты, интеграционный тест
- Навигатор полностью перешел на версию 2.0 (он же router)
- Есть диплинк для открытия страницы создания таски (см. QR код в самом низу Readme)
- Диплинк открывается в том числе и из закрытого приложения
- Добавить новую задачу, описав ее текстом и установив ей приоритет и дедлайн
- Отредактировать уже добавленную задачу
- Удалить задачу при помощи свайпа вбок, либо на странице редактирования по нажатию кнопки
- Отметить задачу выполненной при помощи свайпа вбок, либо нажатием на чекбокс задачи
- Отменить выполнение задачи повторным свайпом вбок
- Показать / скрыть выполненные задачи
- Навигация между экранами
- Смена языка с русского на английский и обратно по нажатию кнопки
- Обращение к бэкенду. Получение/добавление/обновление/удаление записей
- Хранение данных в локальной бд. Их получение/добавление/обновление/удаление
Дополнительная информация:
- В качестве стейт менеджмента используется пакет flutter_bloc https://pub.dev/packages/flutter_bloc
- В качестве HTTP клиента исопльзуется Dio https://pub.dev/packages/dio
- Локальная БД организована при помощи Isar https://pub.dev/packages/isar
- Для ведения логов используется пакет logger https://pub.dev/packages/logger
- Интернационализация Easy Localization https://pub.dev/packages/easy_localization
Если хотите тестировать приложение со своим токеном, нужно сделать сборку, т.к. релизный APK идет с моим токеном.
-
Склонировать себе репозиторий, перейти в ветку home_work_4
-
В корень проекта закинуть файл .env. Ссылка на скачивниае шаблона -> Скачать. В нем есть поля BASE_URL="" - адрес бэка. И AUTH_TOKEN="" - твой личный токен. Нужно внутри кавычек прописать адрес бэка и свой токен. Адрес бэка прописывать вот в таком формате:
https://****.******.ru/todobackend
Помимо этого там есть поля для настройки Firebase. Все свои значения нужно перенести туда. По названиям можно понять где какое. -
Добавить google_services.json в android/app
-
Подтянуть зависимости
flutter pub get
-
Запустить кодогенерацию:
dart run build_runner build --delete-conflicting-outputs
dart run easy_localization:generate -f keys -o locale_keys.g.dart -O "lib/l10n" -S "assets/translations"
dart run easy_localization:generate -S "assets/translations" -O "lib/l10n"
-
Если вдруг надо поменять значения в .env файле, то после изменения запустить команду
dart run build_runner clean
и только потомdart run build_runner build --delete-conflicting-outputs
иначе изменения не вступят в силу! -
Сборка проекта
Продакшн сборка (рекомендую её)
flutter build apk --flavor prod -t lib/main_prod.dart
Установить на телефон
flutter install --flavor prod
Либо dev сборка
flutter build apk --flavor dev -t lib/main_dev.dart
Установить на телефон
flutter install --flavor dev
-
Чтобы запускать проект из Android studio, нужно справа вверху нажать
Add Configuration
Далее '+'
Flutter
Задать Name
Выбрать в качестве Entry point файл main_prod.dart
Прописать в поле Build flavor значение prod
Сохранить
Те же шаги и для dev сборки.
Если хочешь запустить релизную сборку на эмуляторе Android, нужно обязательно поставить эмулятор x86-x64
Иначе приложение будет вылетать при запуске 🦖 ☠️ ☠️ ☠️
Ссылка для скачивания: https://github.com/darkwolf999/todo/releases/tag/4.0.0
Диплинк можно открыть, введя в браузер смартфона адрес:
darkwolf://todo/task
Также можно ввести команду в терминале:
adb shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -d darkwolf://todo/task
Если не работает adb, вот гайд по его настройке: https://medium.com/androiddevelopers/help-adb-is-not-found-93e9ed8a67ee
Если лень заморачиваться, вот вам красивый большой QR, через который вы сразу откроете диплинк в приложение (лучше издалека камеру наводить):