نقل التركيز وإزالته

تتيح لك FocusManager تحريك التركيز في اتجاه معيّن أو إزالته بالكامل. استخدِم FocusRequester لاستهداف المكوّنات المباشر (راجِع طلب التركيز آليًا).

نقل التركيز في اتجاهات مختلفة باستخدام FocusManager

لنقل التركيز آليًا في اتجاه نسبي، اتّبِع الخطوات التالية:

  1. احصل على مثيل FocusManager باستخدام LocalFocusManager.current.
  2. استخدِم القيمة FocusDirection للاتصال بالرقم moveFocus() (Next أو Previous أو Up أو Down أو Left أو Right أو Enter أو Exit).

val focusManager = LocalFocusManager.current

Button(
    onClick = {
        focusManager.moveFocus(FocusDirection.Next)
    }
) {
    Text("Next Field")
}

تركيز واضح

لإزالة التركيز من أي عنصر يركّز عليه حاليًا (على سبيل المثال، عندما يضغط المستخدم على المفتاح Esc)، استخدِم الدالة clearFocus():

val focusManager = LocalFocusManager.current

Box(
    modifier = Modifier.onPreviewKeyEvent { keyEvent ->
        if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) {
            focusManager.clearFocus()
            true
        } else {
            false
        }
    }
)

تقبل الدالة clearFocus() مَعلمة force: Boolean = false اختيارية:

  • ‫force = false (القيمة التلقائية): يتم احترام عمليات قفل التركيز ولن تتم إزالة التركيز إذا كان المكوّن النشط قد استحوذ على التركيز.
  • ‫force = true: يزيل التركيز بشكل غير مشروط حتى إذا كان أحد المكوّنات قد استحوذ على التركيز.