تعویض

کامپوننت Switch به کاربران اجازه می‌دهد تا بین دو حالت انتخاب کنند: انتخاب شده و انتخاب نشده. در برنامه خود می‌توانید از یک سوئیچ برای انجام یکی از موارد زیر توسط کاربر استفاده کنید:

  • یک تنظیم را روشن یا خاموش کنید.
  • یک ویژگی را فعال یا غیرفعال کنید.
  • یک گزینه را انتخاب کنید.

این قطعه دو بخش دارد: انگشت شست و مسیر. انگشت شست بخش قابل کشیدن سوئیچ است و مسیر، پس‌زمینه است. کاربر می‌تواند انگشت شست را به چپ یا راست بکشد تا وضعیت سوئیچ را تغییر دهد. همچنین می‌تواند برای بررسی و پاک کردن آن، روی سوئیچ ضربه بزند.

نمونه‌هایی از کامپوننت Switch در حالت روشن و تاریک.
شکل ۱. قطعه سوئیچ.

پیاده‌سازی اولیه

برای تعریف کامل API به مرجع Switch مراجعه کنید. در زیر برخی از پارامترهای کلیدی که ممکن است به آنها نیاز داشته باشید، آورده شده است:

  • checked : وضعیت اولیه سوئیچ.
  • onCheckedChange : یک تابع فراخوانی است که هنگام تغییر وضعیت سوئیچ فراخوانی می‌شود.
  • enabled : مشخص می‌کند که آیا سوئیچ فعال است یا غیرفعال.
  • colors : رنگ‌های مورد استفاده برای سوئیچ.

مثال زیر یک پیاده‌سازی مینیمال از کامپوننت Switch است.

@Composable
fun SwitchMinimalExample() {
    var checked by remember { mutableStateOf(true) }

    Switch(
        checked = checked,
        onCheckedChange = {
            checked = it
        }
    )
}

این پیاده‌سازی وقتی تیک نخورده باشد، به صورت زیر نمایش داده می‌شود:

یک سوئیچ اساسی که تیک نخورده است.
شکل ۲. یک سوئیچ بدون علامت.

این ظاهر هنگام بررسی است:

یک سوئیچ پایه که بررسی شده است.
شکل ۳. یک سوئیچ بررسی شده.

پیاده‌سازی پیشرفته

پارامترهای اصلی که ممکن است بخواهید هنگام پیاده‌سازی یک سوئیچ پیشرفته‌تر استفاده کنید، موارد زیر هستند:

  • thumbContent : از این برای سفارشی‌سازی ظاهر thumb هنگام تیک زدن آن استفاده کنید.
  • colors : از این گزینه برای سفارشی‌سازی رنگ مسیر و انگشت شست استفاده کنید.

انگشت شست سفارشی

شما می‌توانید هر ترکیب‌بندی را برای پارامتر thumbContent ارسال کنید تا یک thumb سفارشی ایجاد کنید. در زیر مثالی از یک سوئیچ که از یک آیکون سفارشی برای thumb خود استفاده می‌کند، آمده است:

@Composable
fun SwitchWithIconExample() {
    var checked by remember { mutableStateOf(true) }

    Switch(
        checked = checked,
        onCheckedChange = {
            checked = it
        },
        thumbContent = if (checked) {
            {
                Icon(
                    imageVector = Icons.Filled.Check,
                    contentDescription = null,
                    modifier = Modifier.size(SwitchDefaults.IconSize),
                )
            }
        } else {
            null
        }
    )
}

در این پیاده‌سازی، ظاهر بدون علامت‌گذاری مشابه مثال بخش قبل است. با این حال، وقتی علامت‌گذاری شود، این پیاده‌سازی به شکل زیر ظاهر می‌شود:

سوئیچی که از پارامتر thumbContent برای نمایش یک آیکون سفارشی هنگام علامت زدن استفاده می‌کند.
شکل ۴. یک سوئیچ با آیکون تیک خورده سفارشی.

رنگ‌های سفارشی

مثال زیر نشان می‌دهد که چگونه می‌توانید از پارامتر colors برای تغییر رنگ شست و مسیر یک سوئیچ، با در نظر گرفتن اینکه آیا سوئیچ تیک خورده است یا خیر، استفاده کنید.

@Composable
fun SwitchWithCustomColors() {
    var checked by remember { mutableStateOf(true) }

    Switch(
        checked = checked,
        onCheckedChange = {
            checked = it
        },
        colors = SwitchDefaults.colors(
            checkedThumbColor = MaterialTheme.colorScheme.primary,
            checkedTrackColor = MaterialTheme.colorScheme.primaryContainer,
            uncheckedThumbColor = MaterialTheme.colorScheme.secondary,
            uncheckedTrackColor = MaterialTheme.colorScheme.secondaryContainer,
        )
    )
}

این پیاده‌سازی به صورت زیر ظاهر می‌شود:

سوئیچی که از پارامتر رنگ‌ها برای نمایش سوئیچی با رنگ‌های دلخواه برای انگشت شست و مسیر استفاده می‌کند.
شکل ۵. یک سوئیچ با رنگ‌های سفارشی.

منابع اضافی