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

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

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

لنقل التركيز آليًا في اتجاه نسبي:

  1. احصل على مثيل FocusManager باستخدام LocalFocusManager.current.
  2. استدعِ moveFocus() باستخدام قيمة FocusDirection (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: يزيل التركيز بدون شروط حتى إذا كان أحد المكوّنات قد التقط التركيز.