12
آموزش کاتلین در اندروید

پروژه نهایی: مینی اپ تسک‌ها

دیگه وقتشه همه چیز رو جمع کنیم؛ بدون پروژه، آموزش مثل غذای بی‌نمکه.

درس 12 از 12

مدل تسک

اول مدل داده را می‌سازیم؛ ساده، قابل فهم و قابل توسعه.

Task model
data class Task(
    val id: Int,
    val title: String,
    val done: Boolean = false
)
خروجی یا نتیجه اجرا
یک مدل Task داریم که عنوان و وضعیت انجام‌شدن را نگه می‌دارد.
نکته کاربردی: پروژه خوب از مدل خوب شروع می‌شود. مدل بی‌نظم یعنی ViewModel بی‌نظم و UI بی‌اعصاب.

ViewModel پروژه

اینجا state لیست را داخل ViewModel نگه داشتیم تا UI فقط نمایش بدهد و رویداد بفرستد.

TaskViewModel
class TaskViewModel : ViewModel() {
    var tasks by mutableStateOf(listOf<Task>())
        private set

    fun addTask(title: String) {
        val task = Task(id = tasks.size + 1, title = title)
        tasks = tasks + task
    }
}
خروجی یا نتیجه اجرا
با هر بار addTask، یک تسک جدید به لیست اضافه می‌شود.
نکته کاربردی: این الگو برای پروژه‌های بزرگ‌تر هم قابل رشد است؛ بعداً می‌توانی Repository، Room و API را بهش وصل کنی.

نتیجه این درس 🎯

مسیر Android را از UI تا پروژه دیدی. الان می‌توانی یک اپ Compose کوچک بسازی و کم‌کم Repository، شبکه و دیتابیس واقعی را بهش اضافه کنی.

تمرین! 🧠

تابع toggleDone بنویس که done یک تسک را برعکس کند.

جواب تمرین
fun toggleDone(id: Int) {
    tasks = tasks.map { task ->
        if (task.id == id) task.copy(done = !task.done) else task
    }
}
خروجی جواب
تسک مورد نظر از انجام نشده به انجام شده یا برعکس تغییر می‌کند.