Como criar um aplicativo de lista de tarefas usando SwiftUI (com categorias, prioridades e prazos)

Guia completo para desenvolver seu app de tarefas em SwiftUI

SwiftUI é uma excelente ferramenta da Apple que simplifica muito o desenvolvimento de aplicativos para iOS. Neste artigo, você aprenderá como criar um aplicativo de lista de tarefas completo, incluindo categorias, níveis de prioridade e datas de vencimento, usando SwiftUI.

Vantagens de usar SwiftUI no seu app de tarefas

SwiftUI facilita a criação de interfaces claras e intuitivas. Com ele, você pode facilmente implementar funções importantes, como:

  • Categorias (ex: trabalho, pessoal, compras)
  • Prioridades (Baixa, Média, Alta)
  • Definição de datas de vencimento
  • Navegação por abas
  • Armazenamento simples com UserDefaults

Como criar um aplicativo de tarefas em SwiftUI – passo a passo

SwiftUI Como criar um aplicativo de lista de tarefas usando SwiftUI (com categorias, prioridades e prazos)

1. Criando o modelo da tarefa

Primeiro, defina um modelo básico que representa cada tarefa:

struct Task: Identifiable, Codable {
    var id = UUID()
    var title: String
    var category: String
    var priority: String
    var dueDate: Date
    var isCompleted: Bool
}

Essa estrutura inclui o essencial para cada tarefa:

  • Título
  • Categoria
  • Prioridade
  • Prazo
  • Status de conclusão

Configurando a Navegação do Aplicativo com TabView

Crie uma navegação simples com duas abas: “Todas as Tarefas” e “Categorias”. Veja um exemplo básico:

struct ContentView: View {
    @State private var tasks: [Task] = []

    var body: some View {
        TabView {
            AllTasksView(tasks: $tasks)
                .tabItem {
                    Label("Todas as Tarefas", systemImage: "list.bullet")
                }

            CategoriesView(tasks: $tasks)
                .tabItem {
                    Label("Categorias", systemImage: "folder")
                }
        }
        .onAppear(perform: loadTasks)
    }
}

Visualização de todas as tarefas

Crie uma visualização geral das tarefas, permitindo marcá-las como concluídas e excluí-las facilmente.

struct AllTasksView: View {
    @Binding var tasks: [Task]

    var body: some View {
        NavigationView {
            TaskListView(tasks: $tasks, title: "Todas as Tarefas", filter: nil)
        }
    }
}

Agrupando tarefas por categoria

Permita aos usuários navegarem por categorias específicas e visualizar tarefas filtradas:

struct CategoriesView: View {
    @Binding var tasks: [Task]

    let categories = ["Geral", "Trabalho", "Pessoal", "Compras"]

    var body: some View {
        NavigationView {
            List {
                ForEach(categories, id: \.self) { category in
                    NavigationLink(destination: TaskListView(tasks: $tasks, title: category, filter: category)) {
                        Text(category)
                    }
                }
            }
            .navigationTitle("Categorias 📂")
        }
    }
}

Crie uma visualização reutilizável das tarefas

Este componente pode ser usado para listar tarefas com ou sem filtro:

struct TaskListView: View {
    @Binding var tasks: [Task]
    let title: String
    let filter: String?

    var filteredTasks: [Task] {
        if let filter = filter {
            return tasks.filter { $0.category == filter }
        }
        return tasks
    }

    var body: some View {
        VStack {
            TaskFormView(tasks: $tasks)

            List {
                ForEach(filteredTasks) { task in
                    TaskRow(task: task, tasks: $tasks)
                }
                .onDelete { indexSet in
                    tasks.remove(atOffsets: indexSet)
                    saveTasks()
                }
            }
        }
        .navigationTitle(title)
    }

    func saveTasks() {
        if let encoded = try? JSONEncoder().encode(tasks) {
            UserDefaults.standard.set(encoded, forKey: "tasks")
        }
    }
}

Formulário para adicionar novas tarefas

Adicione novas tarefas de maneira simples e intuitiva com este formulário:

struct TaskFormView: View {
    @Binding var tasks: [Task]
    @State private var newTaskTitle = ""
    @State private var selectedCategory = "Geral"
    @State private var selectedPriority = "Média"
    @State private var dueDate = Date()

    let categories = ["Geral", "Trabalho", "Pessoal", "Compras"]
    let priorities = ["Baixa", "Média", "Alta"]

    var body: some View {
        Form {
            Section(header: Text("Nova Tarefa")) {
                TextField("Nome da tarefa", text: $newTaskTitle)

                Picker("Categoria", selection: $selectedCategory) {
                    ForEach(categories, id: \.self) { category in
                        Text(category)
                    }
                }

                Picker("Prioridade", selection: $selectedPriority) {
                    ForEach(priorities, id: \.self) { priority in
                        Text(priority)
                    }
                }
                .pickerStyle(SegmentedPickerStyle())

                DatePicker("Data de vencimento", selection: $dueDate, displayedComponents: .date)

                Button(action: addTask) {
                    Label("Adicionar Tarefa", systemImage: "plus.circle.fill")
                        .foregroundColor(.blue)
                }
                .disabled(newTaskTitle.isEmpty)
            }
        }
    }

    func addTask() {
        let newTask = Task(
            title: newTaskTitle,
            category: selectedCategory,
            priority: selectedPriority,
            dueDate: dueDate,
            isCompleted: false
        )
        tasks.append(newTask)
        newTaskTitle = ""
        saveTasks()
    }

    func saveTasks() {
        if let encoded = try? JSONEncoder().encode(tasks) {
            UserDefaults.standard.set(encoded, forKey: "tasks")
        }
    }
}

Conclusão

Seguindo esses passos, você criou um aplicativo completo e funcional de lista de tarefas utilizando SwiftUI. Agora, você pode gerenciar suas tarefas com mais produtividade, dividindo-as em categorias, definindo prioridades e controlando prazos com praticidade.

Comece agora mesmo a explorar as possibilidades que SwiftUI oferece e melhore suas habilidades em desenvolvimento de aplicativos iOS!

Compartilhe

No Guia da Internet, simplificamos o que parece complicado! Compartilhamos conteúdos sobre tecnologia, finanças, criptomoedas e as tendências do momento de forma clara e objetiva. Seja para aprender sobre investimentos, explorar novas tecnologias ou descobrir curiosidades incríveis, aqui você sempre encontra informação confiável e acessível!

Publicar comentário