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

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

استفاده از 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() را به محفظه‌های اصلی نیز متصل کنید تا تمرکز به‌طور خودکار به آخرین فرزند متمرکزشده بازگردد. برای اطلاعات بیشتر، راهنمای بازیابی تمرکز را ببینید.