Android و Jetpack Compose؛ UI بدون XML جنگلی
اینجا کاتلین میره روی گوشی و UI رو با کد تمیز میسازه.
Compose چیه؟
Jetpack Compose ابزار مدرن ساخت UI اندرویده. بهجای XMLهای طولانی، UI رو با تابعهای کاتلینی میسازی. تفکرش declarativeه: میگی UI برای این state باید چه شکلی باشه، نه اینکه دونهدونه با بیل و کلنگ تغییرش بدی.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
Composable ساده
تابعهایی که UI تولید میکنن با `@Composable` مشخص میشن. هر composable بهتره کوچک، خوانا و قابل ترکیب باشه؛ مثل لگو، نه مثل بتن یکتکه.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
@Composable
fun Greeting(name: String) {
Text(text = "سلام $name")
}
روی صفحه متن «سلام Ali» یا هر اسمی که پاس بدهی نمایش داده میشود.
State در Compose
وقتی state تغییر کنه، Compose UI رو دوباره میسازه. باید state رو درست نگه داری تا UI مثل آدم واکنش نشون بده.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
@Composable
fun Counter() {
var count by remember { mutableStateOf(0) }
Button(onClick = { count++ }) {
Text("کلیکها: $count")
}
}
هر بار روی Button بزنی عدد کلیکها یکی بیشتر میشود؛ خروجی بصری است نه کنسولی.
لیست ساده
برای لیستها از `LazyColumn` استفاده میکنی؛ چون اگر هزار آیتم داری، قرار نیست همه با هم بیفتن روی دوش گوشی بیچاره.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
@Composable
fun LanguageList(items: List<String>) {
LazyColumn {
items(items) { item ->
Text(text = item)
}
}
}
یک لیست عمودی از آیتمها روی صفحه ساخته میشود.
نتیجه این درس 🎯
Compose یعنی UI را با خود Kotlin بسازی، نه با XMLهای جنگلی. state را بفهمی، نصف مسیر ساخت UIهای تعاملی را رفتهای.
تمرین! 🧠
یک composable بنویس که عنوان دوره و تعداد درسها را نمایش دهد.
@Composable
fun CourseCard(title: String, lessons: Int) {
Column {
Text(text = title)
Text(text = "تعداد درسها: $lessons")
}
}
خروجی بصری: یک کارت ساده با عنوان دوره و تعداد درسها.