Fix CupertinoSwitch accessibility (#19927)

This commit is contained in:
xster 2018-07-30 11:18:32 -07:00 committed by GitHub
parent dfe5b591a6
commit cded7efbd0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 36 deletions

View File

@ -26,7 +26,9 @@ class _CupertinoSwitchDemoState extends State<CupertinoSwitchDemo> {
child: new Column( child: new Column(
mainAxisAlignment: MainAxisAlignment.spaceAround, mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[ children: <Widget>[
new Column( new Semantics(
container: true,
child: new Column(
children: <Widget>[ children: <Widget>[
new CupertinoSwitch( new CupertinoSwitch(
value: _switchValue, value: _switchValue,
@ -41,7 +43,10 @@ class _CupertinoSwitchDemoState extends State<CupertinoSwitchDemo> {
), ),
], ],
), ),
new Column( ),
new Semantics(
container: true,
child: new Column(
children: const <Widget>[ children: const <Widget>[
const CupertinoSwitch( const CupertinoSwitch(
value: true, value: true,
@ -52,7 +57,10 @@ class _CupertinoSwitchDemoState extends State<CupertinoSwitchDemo> {
), ),
], ],
), ),
new Column( ),
new Semantics(
container: true,
child: new Column(
children: const <Widget>[ children: const <Widget>[
const CupertinoSwitch( const CupertinoSwitch(
value: false, value: false,
@ -63,6 +71,7 @@ class _CupertinoSwitchDemoState extends State<CupertinoSwitchDemo> {
), ),
], ],
), ),
),
], ],
), ),
), ),

View File

@ -380,10 +380,11 @@ class _RenderCupertinoSwitch extends RenderConstrainedBox {
void describeSemanticsConfiguration(SemanticsConfiguration config) { void describeSemanticsConfiguration(SemanticsConfiguration config) {
super.describeSemanticsConfiguration(config); super.describeSemanticsConfiguration(config);
config.isSemanticBoundary = isInteractive;
if (isInteractive) if (isInteractive)
config.onTap = _handleTap; config.onTap = _handleTap;
config.isChecked = _value;
config.isEnabled = isInteractive;
config.isToggled = _value;
} }
final CupertinoThumbPainter _thumbPainter = new CupertinoThumbPainter(); final CupertinoThumbPainter _thumbPainter = new CupertinoThumbPainter();