درخواست تمرکز برنامه‌ریزی‌شده

در برخی‌از جریان‌های کاربر، برنامه شما باید به‌طور صریح تمرکز را به عنصر خاصی منتقل کند. برای مثال، وقتی کاربر روی دکمه «جستجو» کلیک می‌کند، ممکن است بخواهید به‌طور خودکار تمرکز را روی فیلد ورودی جستجو قرار دهید.

استفاده از FocusRequester

برای درخواست صریح تمرکز:

  1. یک نمونه FocusRequester ایجاد و به‌خاطر بسپارید: val focusRequester = remember { FocusRequester() }.
  2. بااستفاده از توصیف‌گر focusRequester، FocusRequester را به عنصر ترکیبی هدف پیوست کنید.
  3. ‫requestFocus() را در داخل یک برگشت رویداد (مثل onClick) یا محدوده روتین همکار فراخوانی کنید.

val focusRequester = remember { FocusRequester() }
var text by remember { mutableStateOf("") }

TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.focusRequester(focusRequester)
)

val focusRequester = remember { FocusRequester() }
var text by remember { mutableStateOf("") }

TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.focusRequester(focusRequester)
)

Button(onClick = { focusRequester.requestFocus() }) {
    Text("Request focus on TextField")
}

تنظیم کردن تمرکز صفحه اولیه

برای قرار دادن تمرکز اولیه روی یک عنصر خاص وقتی صفحه برای اولین‌بار ظاهر می‌شود، requestFocus() را در داخل LaunchedEffect(Unit) راه‌اندازی کنید:

LaunchedEffect(Unit) {
    focusRequester.requestFocus()
}

هنگام پیمایش بین محتویات یا بازگشت از صفحه‌ای دیگر، می‌توانید focusRestorer() را به محتویات والد پیوست کنید تا به‌طور خودکار تمرکز به آخرین فرزند متمرکز برگردد. برای اطلاعات بیشتر، راهنمای بازیابی تمرکز را ببینید.