Skip to content

Accessibility - Exposing ReduceMotion  #65874

Closed

Description

@dw2kim

Use case

For iOS, the MediaQuery.of(context).disableAnimations does not detect whether it is Reduce Motion on or off currently.

Thus, it would be very beneficial to expose the AccessibilityFeatures.reduceMotion to MediaQueryData so that the users can check the flag, Or, alternatively, we should make the disableAnimations flag to reflect the reduceMotion flag for iOS.

IMG_26CA03E77E73-1

Proposal

Solution 1:

  • Expose the AccessibilityFeatures.reduceMotion to MediaQueryData

Solution 2:

  • Modify the MediaQueryData.disableAnimations flag to reflect on iOS's ReduceMotion flag.

Activity

  1. changed the title [-]Accessibility - Reduce Motion[/-] [+]Accessibility - Exposing ReduceMotion [/+] on Sep 15, 2020
  2. jonahwilliams commented on Sep 15, 2020

    @jonahwilliams
    Contributor

    Reduce motion and disable animations are not equivalent.

  3. dw2kim commented on Sep 15, 2020

    @dw2kim
    Author

    @jonahwilliams Thanks for clarifying! Is there any way to detect the Reduce Motion from the app? Or, is there a reason why reduceMotion is not exposed to MediaQueryData?

  4. jonahwilliams commented on Sep 15, 2020

    @jonahwilliams
    Contributor

    reduce motion is exposed through the window's AccessibilityFeatures. We decided to stop putting everything on media query after a point.

  5. dw2kim commented on Sep 15, 2020

    @dw2kim
    Author

    @jonahwilliams I see. I think the reduceMotion is only flag that is missing in the media query for the Accessibility.

    Would it be okay to open PR just to expose this reduceMotion flag?
    Or, is there a better way to access this flag from the App?

  6. jonahwilliams commented on Sep 15, 2020

    @jonahwilliams
    Contributor

    I think @HansMuller had some idea on this. I believe we should make a new inherited widget that only exposes the accessibility features, and prefer those over the existing ones on media query.

  7. added
    a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)
    frameworkflutter/packages/flutter repository. See also f: labels.
    on Sep 15, 2020
  8. HansMuller commented on Sep 16, 2020

    @HansMuller
    Contributor

    This a good suggestion for improving Flutter's a11y support. Factoring reduceMotion into the widget implementations would take a considerable effort.

    CC @chunhtai

  9. kennethj commented on Jun 18, 2021

    @kennethj

    Any updates on this?

  10. chunhtai commented on Jun 18, 2021

    @chunhtai
    Contributor

    There is no progress done on this issue. Since there is already a way to get the reduce motion setting, this is a low priority issue. We welcome any contribution though.

  11. added
    P3Issues that are less important to the Flutter project
    on Aug 2, 2022
  12. Albert221 commented on Nov 6, 2023

    @Albert221
    Contributor

    @chunhtai would you see reduceMotion as an additional MediaQueryData field, or as @jonahwilliams suggested, we should create a separate inherited widget that is responsible just for these accessibility settings? I'm potentially willing to work on this :)

  13. chunhtai commented on Nov 9, 2023

    @chunhtai
    Contributor

    We can add to AccessibilityFeatures

  14. kerberjg commented on Aug 22, 2024

    @kerberjg
    Contributor

    AccessibilityFeatures.reduceMotion is now accessible as bool via

    View.of(context).platformDispatcher.accessibilityFeatures.reduceMotion

    Can this be considered solved?

  15. tech-andgar commented on Jan 11, 2025

    @tech-andgar

    AccessibilityFeatures.reduceMotion is now accessible as bool via

    View.of(context).platformDispatcher.accessibilityFeatures.reduceMotion

    Can this be considered solved?

    Checked and only working in iOS. But no working other platforms (Web, Desktop macOS)

  16. chrisbobbe commented on Oct 21, 2025

    @chrisbobbe
    Contributor

    I propose closing this, since this setting is now exposed via AccessibilityFeatures.reduceMotion.

    Checked and only working in iOS. But no working other platforms (Web, Desktop macOS)

    It's not expected to work on other platforms, and the dartdoc is already clear about that:

      /// The platform is requesting that certain animations be simplified and
      /// parallax effects removed.
      ///
      /// Only supported on iOS.
      bool get reduceMotion => _kReduceMotionIndex & _index != 0;

    This is an iOS setting. Here are the Apple user and developer docs about it:

    If other platforms have similar settings and there's interest in exposing those, I think we can track them in separate issues.

  17. github-actions commented on Nov 4, 2025

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  18. locked as resolved and limited conversation to collaborators on Nov 4, 2025
  19. cbracken commented on Aug 7, 2026

    @cbracken
    Member

    For what it's worth, I wired this through to MediaQuery in #190287

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Issues that are less important to the Flutter projecta: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)c: proposalA detailed proposal for a change to Flutterframeworkflutter/packages/flutter repository. See also f: labels.team-frameworkOwned by Framework teamtriaged-frameworkTriaged by Framework team

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions