مدیفایر Modifier ها در جت پک کامپوز : 3 دسته اصلی


یکی از اجزای کلیدی در اندروید و جت پک کامپوز مدیفایر Modifier است؛ ابزاری که به شما امکان میدهد که ظاهر، چیدمان و رفتار کامپوزابلها Composables را بدون تغییر منطق درونی آنها کنترل کنید.
در خیلی از مقاله ها Jetpack Compose را به این صورت معرفی میکنند :
“جتپک کامپوز (Jetpack Compose) ابزار مدرن گوگل برای طراحی رابط کاربری بومی (Native UI) در اندروید است. این فریمورک رویکردی اعلامی (Declarative) و واکنشی (Reactive) به ساخت UI دارد “.
این یعنی :
«تو فقط میگی که رابط چطوری باشه، خودش میسازه و نشونش میده.»
Modifierها دقیقاً چه هستند؟
در کامپوز Modifier ها اشیایی غیرقابلتغییر (immutable) هستند که برای کنترل جنبههای مختلف کامپوزابلها، بدون تغییر وضعیت داخلی آنها استفاده میشوند. به عبارت دیگر، Modifierها به شما اجازه میدهند کامپوزابلها را تزئین (decorate) یا تقویت (augment) کنید بدون اینکه ساختار داخلی آنها را تغییر دهیم
با مدیفایر ها میتوانید کارهایی مثل زیر انجام دهید:
تغییر اندازه، موقعیت و چیدمان
افزودن ویژگیهای ظاهری مانند رنگ پسزمینه، سایه، حاشیه و غیره
اعمال تعاملات کاربر مانند کلیک، اسکرول یا درَگ
افزودن اطلاعات اضافی مانند برچسبهای دسترسپذیری (accessibility labels)
مدیفایر ها قابل ترکیب (Chainable) هستند. مثلاً میتوان این زنجیره را نوشت:
Modifier .padding(16.dp) .background(Color.Blue) .clickable { /* handle click */ }
چرا همهچیز داخل Modifier نیست؟
شاید بهنظر برسد که همه تنظیمات UI باید از طریق Modifier انجام شوند، اما در واقع برخی ویژگیها داخل پارامترهای خود کامپوزیبل تعریف میشوند.
مثال
Text( text = "سلام دنیا!", color = Color.White, // ویژگی تخصصی مربوط به خود Text fontSize = 20.sp, // تنظیم اندازه فونت fontWeight = FontWeight.Bold, // ضخامت فونت (Bold) modifier = Modifier .padding(16.dp) // فاصله از اطراف (Modifier) .background(Color.Blue) // پسزمینه آبی (Modifier) .clickable { // کلیکپذیر کردن متن (Modifier) Log.d("TAG", "Text clicked!") } )
دلیل تفکیک:
Modifier برای تغییرات محیطی و عمومی مثل فاصله، رنگ پسزمینه، موقعیت و سایز است.
پارامترهای تخصصی مثل استایل متن، مربوط به منطق داخلی کامپوزیبل هستند و بهتر است در پارامترهای خود آن باقی بمانند.
این تفکیک، خوانایی و قابلیت نگهداری کد را بالا میبرد و مسئولیتها را بهدرستی تقسیم میکند.
دستهبندی مدیفایر ها در Jetpack Compose
مدیفایر ها بر اساس عملکردشان به دستههای مختلفی تقسیم میشوند. در ادامه، سه دستهی اصلی را معرفی میکنیم:
-
مدیفایر چیدمان (Layout Modifiers)
برای تغییر در اندازهگیری و موقعیتیابی کامپوزابلها استفاده میشوند. مانند:
- padding()
- offset()
- fillMaxSize()
- wrapContentSize()
- . . .
-
مدیفایر رسم (Drawing Modifiers)
- ظاهر گرافیکی کامپوزابل را تغییر میدهند. مانند:
- background()
- border()
- shadow()
- drawBehind()
- . . .
-
مدیفایر تعامل (Interaction Modifiers)
- برای افزودن قابلیتهای تعاملی به کامپوزابلها. مانند:
- clickable()
- pointerInput()
- draggable()
- scrollable()
- . . .
جمعبندی
Modifier ها در Jetpack Compose از قدرتمندترین ابزارهایی هستند که با استفاده از آنها میتوانید رابطهای کاربری قابل ترکیب، منعطف و قابل نگهداری بسازید.
با آنها میتوانید ظاهر، چیدمان و تعاملات را کنترل کنید، بدون اینکه نیاز به دستکاری درونی کامپوزابل باشد. و اگر در استفاده از Modifier ها مهارت لازم رو کسب کنید ، دیگه در خیلی از موارد نیاز نیست از لایه های تو در تو برای UI ها پیچیده استفاده کنید ، که این کار باعث میشود کد شما کوتاه شود ، همچنین باعث میشود برنامه شما سریع تر و بهینه تر شود .
در مطالب بعد این سه دسته از Modifier ها رو بررسی میکنیم که اولین آنها ، Modifier Layout است .
شاد باشید .