Реализация Todo списка это типичный пример для демонстрации какой либо технологии, своеобразный hello world.
Приложение содержит один экран TodoListView с подключенной вью моделью TodoListViewModel.
Основное: Необходимо добавить на экран список задач и отдельную строку для добавления новой задачи.
Строка добавления новой задачи должна состоять из поля ввода и кнопки "Добавить". Каждая строка списка должны отображать текст задачи. Невыполненные задачи можно отображать стандартным шрифтом, а выполненные серым зачеркнутым (опционально). При клике по задаче она должна менять состояние выполнена/невыполенена. Все состояние должно быть в TodoListViewModel.
Дополнительные:
Реализовать хранение задач на диске. Добавить класс TodoStorage
c методами addTask
, updateTask
и getTasks
.
Сохранение должно проходить на глобальной очереди, а методы TodoStorage
потокобезопасны и возвращать Publisher
.
Вся работа с потоками должна быть реализована с помощью Combine
.
Получать список задач с диска не нужно делать один раз. В дальнейшем при добавлении новой задачи или обновлении имеющейся следует изменять и копию хранящуюся в памяти и данные на диске.
- Для отображения списка можно использовать
List
илиVStack
. - Данные для каждой задачи удобно хранить в отдельных объектах. Для того что бы
List
илиVStack
могли отображать эти объекты им необходимо реализовать протоколIdentifiable
. - Строку добавления новой задачи можно отображать в первой строке списка.