این صفحه بهترین شیوهها برای کار با سبکهایی که در سراسر کدبیس شما به ثبات میرسند، و همچنین اصولی که ما هنگام طراحی APIها دنبال کردهایم را شرح میدهد.
بایدها
این بهترین شیوهها را دنبال کنید:
انجام دهید: از Styles برای تصاویر و از modifiers برای رفتارها استفاده کنید
از API استایلها برای پیکربندی بصری (پسزمینهها، فاصلهگذاری، حاشیهها) استفاده کنید و اصلاحکنندهها را برای رفتارهایی مانند منطق کلیک، تشخیص حرکت یا دسترسیپذیری ذخیره کنید.
انجام دهید: پارامترهای Style را در سیستمهای طراحی نمایش دهید
برای اجزای سیستم طراحی سفارشی خودتان، باید یک شیء Style را بعد از پارامتر اصلاحکننده قرار دهید.
@Composable fun GradientButton( modifier: Modifier = Modifier, // ✅ DO: for design system components, expose a style modifier to consumers to be able to customize the components style: Style = Style ) { // Consume the style }
انجام دهید: پارامترهای مبتنی بر تصویر را با یک Style جایگزین کنید
در نظر بگیرید که پارامترهای موجود در composables خود را با یک پارامتر Style واحد جایگزین کنید. برای مثال:
// Before @Composable fun OldButton(background: Color, fontColor: Color) { } // After // ✅ DO: Replace visual-based parameters with a style that includes same properties @Composable fun NewButton(style: Style = Style) { }
انجام دهید: اولویتبندی استایلها برای انیمیشنها
از بلوک animate داخلی برای استایلدهی مبتنی بر حالت با انیمیشنها برای افزایش عملکرد نسبت به اصلاحکنندهها استفاده کنید.
باید: از «آخرین بردهای نوشتن» بهره ببرید
از این واقعیت که ویژگیهای style به جای پشتهسازی، بازنویسی میشوند، بهره ببرید. از این ویژگی برای لغو حاشیهها یا پسزمینههای پیشفرض کامپوننت بدون نیاز به پارامترهای متعدد استفاده کنید.
نبایدها
الگوهای زیر توصیه نمیشوند:
نباید: از Styles برای منطق تعامل استفاده کنید
سعی نکنید تشخیص onClick یا ژست را در یک استایل مدیریت کنید. استایلها محدود به پیکربندیهای بصری مبتنی بر حالت هستند، بنابراین نباید منطق تجاری را مدیریت کنند؛ در عوض، فقط باید بر اساس حالت، ظاهر متفاوتی داشته باشند.
انجام ندهید: یک استایل پیشفرض را به عنوان پارامتر پیشفرض ارائه دهید
پارامترهای استایل همیشه باید با استفاده از style: Style = Style :
@Composable fun BadButton( modifier: Modifier = Modifier, // ❌ DON'T set a default style here as a parameter style: Style = Style { background(Color.Red) } ) { }
برای اضافه کردن پارامتر "پیشفرض"، استایل پارامتر ورودی را با استایل پیشفرض تعریفشده ادغام کنید:
@Composable fun GoodButton( modifier: Modifier = Modifier, // ✅ Do: always pass it as a Style, do not pass other defaults style: Style = Style ) { // ... val defaultStyle = Style { background(Color.Red) } // ✅ Do Combine defaults inside with incoming parameter Box(modifier = modifier.styleable(styleState, defaultStyle, style)) { // your logic } }
انجام ندهید: پارامترهای استایل را به کامپوننتهای مبتنی بر طرحبندی ارائه ندهید
اگرچه میتوانید به هر ترکیبپذیری (composable) یک استایل ارائه دهید، اما انتظار نمیرود که ترکیبپذیرهای مبتنی بر طرحبندی یا ترکیبپذیرهای سطح صفحه، استایل را بپذیرند - از دیدگاه مصرفکننده مشخص نیست که یک استایل در این سطح چه کاری انجام میدهد. استایلها برای کامپوننتها طراحی شدهاند، نه لزوماً برای طرحبندیها.