From 049ea73c4d40d1870840d27034d4814c3b7cc6ca Mon Sep 17 00:00:00 2001 From: chunhtai <47866232+chunhtai@users.noreply.github.com> Date: Wed, 1 Dec 2021 20:19:02 -0800 Subject: [PATCH] MinimumTextContrastGuideline should exclude disabled component (#94489) --- .../flutter_test/lib/src/accessibility.dart | 5 +++- .../flutter_test/test/accessibility_test.dart | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/flutter_test/lib/src/accessibility.dart b/packages/flutter_test/lib/src/accessibility.dart index 0adfda17729..150bf454f95 100644 --- a/packages/flutter_test/lib/src/accessibility.dart +++ b/packages/flutter_test/lib/src/accessibility.dart @@ -212,7 +212,10 @@ class MinimumTextContrastGuideline extends AccessibilityGuideline { Future evaluateNode(SemanticsNode node) async { Evaluation result = const Evaluation.pass(); - if (node.isInvisible || node.isMergedIntoParent || node.hasFlag(ui.SemanticsFlag.isHidden)) + if (node.isInvisible || + node.isMergedIntoParent || + node.hasFlag(ui.SemanticsFlag.isHidden) || + (node.hasFlag(ui.SemanticsFlag.hasEnabledState) && !node.hasFlag(ui.SemanticsFlag.isEnabled))) return result; final SemanticsData data = node.getSemanticsData(); final List children = []; diff --git a/packages/flutter_test/test/accessibility_test.dart b/packages/flutter_test/test/accessibility_test.dart index fdf3c36c972..fa12a47bcdb 100644 --- a/packages/flutter_test/test/accessibility_test.dart +++ b/packages/flutter_test/test/accessibility_test.dart @@ -177,6 +177,29 @@ void main() { expect(result.passed, true); handle.dispose(); }); + + testWidgets('Disabled button is excluded from text contrast guideline', (WidgetTester tester) async { + // Regression test https://github.com/flutter/flutter/issues/94428 + final SemanticsHandle handle = tester.ensureSemantics(); + await tester.pumpWidget( + _boilerplate( + ElevatedButton( + onPressed: null, + child: Container( + width: 200.0, + height: 200.0, + color: Colors.yellow, + child: const Text( + 'this is a test', + style: TextStyle(fontSize: 14.0, color: Colors.yellowAccent), + ), + ), + ), + ) + ); + await expectLater(tester, meetsGuideline(textContrastGuideline)); + handle.dispose(); + }); }); group('custom minimum contrast guideline', () {