SemanticsService

Access to platform accessibility services.

Inherits: Service

Methods

announce_message

  • **Signature:** async announce_message(message: str, rtl: bool = False, assertiveness: Assertiveness = Assertiveness.POLITE)
  • **Description:** Sends a semantic announcement with the given message.
  • **Parameters:**
  • - message (str): The message to announce. - rtl (bool, optional): True if the message is right-to-left. Defaults to False. - assertiveness (Assertiveness, optional): The assertiveness level. Only supported on web. Defaults to Assertiveness.POLITE.
  • **Notes:** Use for announcements not automatically handled by UI state changes.
  • announce_tooltip

  • **Signature:** async announce_tooltip(message: str)
  • **Description:** Sends a semantic announcement of a tooltip.
  • **Platform:** Android only.
  • get_accessibility_features

  • **Signature:** async get_accessibility_features() -> AccessibilityFeatures
  • **Description:** Returns the current platform accessibility feature flags.
  • **Returns:** AccessibilityFeatures object with flags like accessible_navigation, bold_text, disable_animations, high_contrast, invert_colors, reduce_motion, on_off_switch_labels, supports_announcements.
  • Example

    Retrieve accessibility features

    import flet as ft

    async def main(page: ft.Page): page.title = "SemanticsService - Accessibility features" page.horizontal_alignment = ft.CrossAxisAlignment.CENTER page.vertical_alignment = ft.MainAxisAlignment.CENTER

    async def get_features() -> str: features = await ft.SemanticsService().get_accessibility_features() return "\n".join([ f"Accessible navigation: {features.accessible_navigation}", f"Bold text: {features.bold_text}", f"Disable animations: {features.disable_animations}", f"High contrast: {features.high_contrast}", f"Invert colors: {features.invert_colors}", f"Reduce motion: {features.reduce_motion}", f"On/off switch labels: {features.on_off_switch_labels}", f"Supports announcements: {features.supports_announcements}", ])

    async def refresh_features(e: ft.Button): info.value = await get_features() page.update()

    page.add( info := ft.Text(await get_features()), ft.Button("Refresh features", on_click=refresh_features), )

    ft.run(main)