عوض کردن

مؤلفه Switch به کاربران امکان می‌دهد بین دو حالت جابه‌جا شوند: علامت‌زده و علامت‌نزده. در برنامه‌تان می‌توانید از کلیدی استفاده کنید تا به کاربر اجازه دهید یکی از کارهای زیر را انجام دهد:

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

این مؤلفه دو بخش دارد: زبانه و شیار. دکمه لغزنده بخش کشیدنی کلید است و شیار پس‌زمینه است. کاربر می‌تواند دکمه را به چپ یا راست بکشد تا وضعیت کلید را تغییر دهد. همچنین می‌توانند روی کلید تک‌ضرب بزنند تا آن را بررسی و پاک کنند.

نمونه‌هایی از مؤلفه «کلید» در هر دو حالت روشن و تاریک.
شکل ۱. عنصر کلید.

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

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

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

مثال زیر پیاده‌سازی حداقلی از ترکیب‌پذیر Switch است.

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

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

این پیاده‌سازی وقتی علامت آن برداشته شود به‌صورت زیر نشان داده می‌شود:

کلید اصلی که علامت نخورده است.
شکل ۲. کلید علامت‌گذاری‌نشده.

این ظاهر پس‌از بررسی است:

«کلید» پایه‌ای که علامت زده شده است.
شکل ۳.‏ کلید علامت‌گذاری‌شده.

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

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

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

شست سفارشی

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

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

    Switch(
        checked = checked,
        onCheckedChange = {
            checked = it
        },
        thumbContent = if (checked) {
            {
                Icon(
                    painter = rememberVectorPainter(AppIcons.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,
        )
    )
}

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

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

منابع بیشتر