Skip to content

[a11y] Add support for high contrast themes in the a11y assessments app #185801

Merged
auto-submit[bot] merged 1 commit into
flutter:masterfrom
hannah-hyj:add-color-contrast
May 1, 2026
Merged

[a11y] Add support for high contrast themes in the a11y assessments app #185801
auto-submit[bot] merged 1 commit into
flutter:masterfrom
hannah-hyj:add-color-contrast

Conversation

@hannah-hyj

@hannah-hyj hannah-hyj commented Apr 30, 2026

Copy link
Copy Markdown
Member

The app bar was usingbackgroundColor: inversePrimary before. the inversePrimary color doesn't change in high contrast mode. update it to use primary and onPrimary.
Also added PageTransition

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label Apr 30, 2026
@hannah-hyj hannah-hyj requested a review from chunhtai April 30, 2026 02:42
@github-actions github-actions Bot added a: text input Entering text in a text field or keyboard related problems f: material design flutter/packages/flutter/material repository. labels Apr 30, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request centralizes theme creation into a _buildTheme helper function and defines static ThemeData constants for light, dark, and high-contrast modes. Redundant AppBar background color overrides are removed across multiple use case files, and the MaterialApp is updated to explicitly provide high-contrast themes, with corresponding updates to the home page tests. Feedback recommends adding documentation comments to private members to align with the repository style guide and suggests evaluating the impact of overriding platform-specific page transitions.

}
}

ThemeData _buildTheme({required Brightness brightness, double contrastLevel = 0.0}) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

According to the Repository Style Guide (Rule 67), documentation comments (///) should be used even for private members to explain their purpose. Please add a doc comment for _buildTheme.

Suggested change
ThemeData _buildTheme({required Brightness brightness, double contrastLevel = 0.0}) {
/// Builds a [ThemeData] with the given [brightness] and [contrastLevel].
ThemeData _buildTheme({required Brightness brightness, double contrastLevel = 0.0}) {
References
  1. Use /// for public-quality documentation, even on private members. (link)

Comment on lines +36 to +42
final ThemeData _lightTheme = _buildTheme(brightness: Brightness.light);
final ThemeData _darkTheme = _buildTheme(brightness: Brightness.dark);
final ThemeData _highContrastTheme = _buildTheme(brightness: Brightness.light, contrastLevel: 1.0);
final ThemeData _highContrastDarkTheme = _buildTheme(
brightness: Brightness.dark,
contrastLevel: 1.0,
);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

These theme variables should have documentation comments explaining their specific use cases (e.g., light, dark, high contrast) per Rule 67 of the Repository Style Guide.

/// The default light theme.
final ThemeData _lightTheme = _buildTheme(brightness: Brightness.light);
/// The default dark theme.
final ThemeData _darkTheme = _buildTheme(brightness: Brightness.dark);
/// The high contrast light theme.
final ThemeData _highContrastTheme = _buildTheme(brightness: Brightness.light, contrastLevel: 1.0);
/// The high contrast dark theme.
final ThemeData _highContrastDarkTheme = _buildTheme(
  brightness: Brightness.dark,
  contrastLevel: 1.0,
);
References
  1. Use /// for public-quality documentation, even on private members. (link)

Comment on lines +27 to +32
pageTransitionsTheme: PageTransitionsTheme(
builders: <TargetPlatform, PageTransitionsBuilder>{
for (final TargetPlatform platform in TargetPlatform.values)
platform: const FadeForwardsPageTransitionsBuilder(),
},
),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Overriding the pageTransitionsTheme for all platforms with FadeForwardsPageTransitionsBuilder removes native transition behaviors (e.g., the horizontal slide transition on iOS). Unless this global override is specifically required for consistent accessibility assessment across platforms, it is generally better to respect platform-specific defaults.

@chunhtai chunhtai left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@hannah-hyj hannah-hyj added the autosubmit Merge PR when tree becomes green via auto submit App label May 1, 2026
@auto-submit auto-submit Bot added this pull request to the merge queue May 1, 2026
Merged via the queue into flutter:master with commit 76b0212 May 1, 2026
170 checks passed
@flutter-dashboard flutter-dashboard Bot removed the autosubmit Merge PR when tree becomes green via auto submit App label May 1, 2026
auto-submit Bot pushed a commit to flutter/packages that referenced this pull request May 1, 2026
Roll Flutter from 81bc3d69535f to 707dbc0420a3 (85 revisions)

flutter/flutter@81bc3d6...707dbc0

2026-05-01 Rusino@users.noreply.github.com Removing TODOs from the WebParagraph code and addressing technical debts. (flutter/flutter#185168)
2026-05-01 mbrase@google.com Ensure that vulkan_interface.h gets included before vk_mem_alloc.h (flutter/flutter#185777)
2026-05-01 nshahan@google.com [flutter_tools] Bump dwds dependency to v27.1.1 (flutter/flutter#185357)
2026-05-01 engine-flutter-autoroll@skia.org Roll Dart SDK from 6d4a319cbdac to 9aa7097f2e3e (3 revisions) (flutter/flutter#185888)
2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from fa1dcb289709 to 7ac6d42f2fd0 (1 revision) (flutter/flutter#185887)
2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from 54cc00adde38 to fa1dcb289709 (3 revisions) (flutter/flutter#185880)
2026-05-01 chris@bracken.jp [iOS] Migrate to FlutterFMLTaskRunner(s) (flutter/flutter#185815)
2026-05-01 ad13dtu@gmail.com Remove material imports from navigator_on_did_remove_page_test and scrollable_in_overlay_test (flutter/flutter#182546)
2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from 2e279266f06a to 54cc00adde38 (3 revisions) (flutter/flutter#185872)
2026-05-01 srawlins@google.com dev: Remove unused parameters (flutter/flutter#185345)
2026-05-01 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from HN5VYzftnf_B8T-n9... to VnzuUefDQR0UhQ1L1... (flutter/flutter#185870)
2026-05-01 robert.ancell@canonical.com Use g_free when using glib memory allocation (flutter/flutter#185519)
2026-05-01 engine-flutter-autoroll@skia.org Roll Dart SDK from d30df3428f2e to 6d4a319cbdac (2 revisions) (flutter/flutter#185862)
2026-05-01 73785960+xfce0@users.noreply.github.com Remove trivial test utility cross-imports from material and cupertino… (flutter/flutter#184295)
2026-05-01 129008657+DaveT1991@users.noreply.github.com Inline test callback painter in tab scaffold test (flutter/flutter#184851)
2026-05-01 jhy03261997@gmail.com [a11y] Add support for high contrast themes in the a11y assessments app  (flutter/flutter#185801)
2026-05-01 jhy03261997@gmail.com [a11y assessment app] Use default color for banner (flutter/flutter#185804)
2026-04-30 73091075+MohamedRisaldarTA@users.noreply.github.com Added name to AUTHORS (flutter/flutter#185586)
2026-04-30 sanaullah.383@hotmail.com Remove semantics_tester import from raw_material_button_test.dart (flutter/flutter#184806)
2026-04-30 sanaullah.383@hotmail.com Remove semantics_tester import from user_accounts_drawer_header_test.dart (flutter/flutter#184809)
2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 7b88c5c281e5 to 2e279266f06a (5 revisions) (flutter/flutter#185854)
2026-04-30 evanwall@buffalo.edu Handle symmetric rectangular and elliptical round super ellipses in the uber SDF renderer  (flutter/flutter#185695)
2026-04-30 15619084+vashworth@users.noreply.github.com Match on process name before killing for SwiftPM (flutter/flutter#185774)
2026-04-30 154381524+flutteractionsbot@users.noreply.github.com Sync CHANGELOG.md from stable (flutter/flutter#185838)
2026-04-30 engine-flutter-autoroll@skia.org Roll Dart SDK from 25910e31a6d2 to d30df3428f2e (5 revisions) (flutter/flutter#185839)
2026-04-30 brackenavaron@gmail.com Check cross imports test subfolders (flutter/flutter#185493)
2026-04-30 112751483+shivanshu877@users.noreply.github.com test: inline TestCallbackPainter in cupertino/picker_test.dart (flutter/flutter#185398)
2026-04-30 97480502+b-luk@users.noreply.github.com Update customer testing version (flutter/flutter#185830)
2026-04-30 jason-simmons@users.noreply.github.com Adapt the Metal shader library output list for debug versus release mode (flutter/flutter#185798)
2026-04-30 jason-simmons@users.noreply.github.com [Impeller] Port a recent Vulkan swapchain fence waiting fix to the AHB version of the swapchain (flutter/flutter#185763)
2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 26a59aa71eff to 7b88c5c281e5 (1 revision) (flutter/flutter#185821)
2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 6b4167b4e204 to 26a59aa71eff (4 revisions) (flutter/flutter#185808)
2026-04-30 jhy03261997@gmail.com [a11y] Mark SemanticsNode dirty when customSemanticsActions change  (flutter/flutter#185707)
2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 1bd2f1cc2746 to 6b4167b4e204 (8 revisions) (flutter/flutter#185799)
2026-04-30 chris@bracken.jp [iOS] Extract FlutterVSyncClient from vsync_waiter_ios (flutter/flutter#185737)
2026-04-30 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from nnv8-SSam6yE8dw4z... to HN5VYzftnf_B8T-n9... (flutter/flutter#185782)
2026-04-29 chris@bracken.jp [iOS] Soften TaskRunner.postTask(delay:task:) delay check (flutter/flutter#185729)
2026-04-29 koji.wakamiya@gmail.com Add reportErrors to ImageStreamListener (flutter/flutter#180327)
2026-04-29 engine-flutter-autoroll@skia.org Roll Skia from f5c781c083c7 to 1bd2f1cc2746 (5 revisions) (flutter/flutter#185761)
2026-04-29 47866232+chunhtai@users.noreply.github.com Update merge semantics logic to merge sibling nodes (flutter/flutter#183745)
2026-04-29 engine-flutter-autoroll@skia.org Roll Packages from ba80f8f to cde5b36 (12 revisions) (flutter/flutter#185748)
2026-04-29 srawlins@google.com examples: Remove unused parameters (flutter/flutter#185346)
2026-04-29 nate.w5687@gmail.com Update TickerMode.getValuesNotifier to handle initialization during State.dispose (flutter/flutter#185248)
2026-04-29 katelovett@google.com Update triage links (flutter/flutter#185714)
2026-04-29 42399845+xxxOVALxxx@users.noreply.github.com Add support for high contrast and color inversion on Android (flutter/flutter#182263)
2026-04-29 engine-flutter-autoroll@skia.org Roll Skia from 05251260fda6 to f5c781c083c7 (2 revisions) (flutter/flutter#185743)
...
creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
…r#11630)

Roll Flutter from 81bc3d69535f to 707dbc0420a3 (85 revisions)

flutter/flutter@81bc3d6...707dbc0

2026-05-01 Rusino@users.noreply.github.com Removing TODOs from the WebParagraph code and addressing technical debts. (flutter/flutter#185168)
2026-05-01 mbrase@google.com Ensure that vulkan_interface.h gets included before vk_mem_alloc.h (flutter/flutter#185777)
2026-05-01 nshahan@google.com [flutter_tools] Bump dwds dependency to v27.1.1 (flutter/flutter#185357)
2026-05-01 engine-flutter-autoroll@skia.org Roll Dart SDK from 6d4a319cbdac to 9aa7097f2e3e (3 revisions) (flutter/flutter#185888)
2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from fa1dcb289709 to 7ac6d42f2fd0 (1 revision) (flutter/flutter#185887)
2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from 54cc00adde38 to fa1dcb289709 (3 revisions) (flutter/flutter#185880)
2026-05-01 chris@bracken.jp [iOS] Migrate to FlutterFMLTaskRunner(s) (flutter/flutter#185815)
2026-05-01 ad13dtu@gmail.com Remove material imports from navigator_on_did_remove_page_test and scrollable_in_overlay_test (flutter/flutter#182546)
2026-05-01 engine-flutter-autoroll@skia.org Roll Skia from 2e279266f06a to 54cc00adde38 (3 revisions) (flutter/flutter#185872)
2026-05-01 srawlins@google.com dev: Remove unused parameters (flutter/flutter#185345)
2026-05-01 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from HN5VYzftnf_B8T-n9... to VnzuUefDQR0UhQ1L1... (flutter/flutter#185870)
2026-05-01 robert.ancell@canonical.com Use g_free when using glib memory allocation (flutter/flutter#185519)
2026-05-01 engine-flutter-autoroll@skia.org Roll Dart SDK from d30df3428f2e to 6d4a319cbdac (2 revisions) (flutter/flutter#185862)
2026-05-01 73785960+xfce0@users.noreply.github.com Remove trivial test utility cross-imports from material and cupertino… (flutter/flutter#184295)
2026-05-01 129008657+DaveT1991@users.noreply.github.com Inline test callback painter in tab scaffold test (flutter/flutter#184851)
2026-05-01 jhy03261997@gmail.com [a11y] Add support for high contrast themes in the a11y assessments app  (flutter/flutter#185801)
2026-05-01 jhy03261997@gmail.com [a11y assessment app] Use default color for banner (flutter/flutter#185804)
2026-04-30 73091075+MohamedRisaldarTA@users.noreply.github.com Added name to AUTHORS (flutter/flutter#185586)
2026-04-30 sanaullah.383@hotmail.com Remove semantics_tester import from raw_material_button_test.dart (flutter/flutter#184806)
2026-04-30 sanaullah.383@hotmail.com Remove semantics_tester import from user_accounts_drawer_header_test.dart (flutter/flutter#184809)
2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 7b88c5c281e5 to 2e279266f06a (5 revisions) (flutter/flutter#185854)
2026-04-30 evanwall@buffalo.edu Handle symmetric rectangular and elliptical round super ellipses in the uber SDF renderer  (flutter/flutter#185695)
2026-04-30 15619084+vashworth@users.noreply.github.com Match on process name before killing for SwiftPM (flutter/flutter#185774)
2026-04-30 154381524+flutteractionsbot@users.noreply.github.com Sync CHANGELOG.md from stable (flutter/flutter#185838)
2026-04-30 engine-flutter-autoroll@skia.org Roll Dart SDK from 25910e31a6d2 to d30df3428f2e (5 revisions) (flutter/flutter#185839)
2026-04-30 brackenavaron@gmail.com Check cross imports test subfolders (flutter/flutter#185493)
2026-04-30 112751483+shivanshu877@users.noreply.github.com test: inline TestCallbackPainter in cupertino/picker_test.dart (flutter/flutter#185398)
2026-04-30 97480502+b-luk@users.noreply.github.com Update customer testing version (flutter/flutter#185830)
2026-04-30 jason-simmons@users.noreply.github.com Adapt the Metal shader library output list for debug versus release mode (flutter/flutter#185798)
2026-04-30 jason-simmons@users.noreply.github.com [Impeller] Port a recent Vulkan swapchain fence waiting fix to the AHB version of the swapchain (flutter/flutter#185763)
2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 26a59aa71eff to 7b88c5c281e5 (1 revision) (flutter/flutter#185821)
2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 6b4167b4e204 to 26a59aa71eff (4 revisions) (flutter/flutter#185808)
2026-04-30 jhy03261997@gmail.com [a11y] Mark SemanticsNode dirty when customSemanticsActions change  (flutter/flutter#185707)
2026-04-30 engine-flutter-autoroll@skia.org Roll Skia from 1bd2f1cc2746 to 6b4167b4e204 (8 revisions) (flutter/flutter#185799)
2026-04-30 chris@bracken.jp [iOS] Extract FlutterVSyncClient from vsync_waiter_ios (flutter/flutter#185737)
2026-04-30 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from nnv8-SSam6yE8dw4z... to HN5VYzftnf_B8T-n9... (flutter/flutter#185782)
2026-04-29 chris@bracken.jp [iOS] Soften TaskRunner.postTask(delay:task:) delay check (flutter/flutter#185729)
2026-04-29 koji.wakamiya@gmail.com Add reportErrors to ImageStreamListener (flutter/flutter#180327)
2026-04-29 engine-flutter-autoroll@skia.org Roll Skia from f5c781c083c7 to 1bd2f1cc2746 (5 revisions) (flutter/flutter#185761)
2026-04-29 47866232+chunhtai@users.noreply.github.com Update merge semantics logic to merge sibling nodes (flutter/flutter#183745)
2026-04-29 engine-flutter-autoroll@skia.org Roll Packages from ba80f8f to cde5b36 (12 revisions) (flutter/flutter#185748)
2026-04-29 srawlins@google.com examples: Remove unused parameters (flutter/flutter#185346)
2026-04-29 nate.w5687@gmail.com Update TickerMode.getValuesNotifier to handle initialization during State.dispose (flutter/flutter#185248)
2026-04-29 katelovett@google.com Update triage links (flutter/flutter#185714)
2026-04-29 42399845+xxxOVALxxx@users.noreply.github.com Add support for high contrast and color inversion on Android (flutter/flutter#182263)
2026-04-29 engine-flutter-autoroll@skia.org Roll Skia from 05251260fda6 to f5c781c083c7 (2 revisions) (flutter/flutter#185743)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: text input Entering text in a text field or keyboard related problems CICD Run CI/CD f: material design flutter/packages/flutter/material repository.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants