Skip to content

Commit 90af75d

Browse files
committed
fix(a11y): toggleable state not read aloud by talkback service
1 parent a751cd3 commit 90af75d

File tree

2 files changed

+49
-37
lines changed

2 files changed

+49
-37
lines changed

app/src/main/java/com/junkfood/seal/ui/component/DialogItems.kt

+13-10
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ fun SingleChoiceItemPreview() {
8080

8181
}
8282
DialogSingleChoiceItem(text = "Preview", selected = true) {
83-
83+
8484
}
8585
}
8686

@@ -178,17 +178,20 @@ fun DialogSwitchItem(
178178
style = MaterialTheme.typography.labelLarge,
179179
modifier = Modifier.weight(1f)
180180
)
181-
val thumbContent: (@Composable () -> Unit)? = if (value) {
182-
{
183-
Icon(
184-
imageVector = Icons.Outlined.Check,
185-
contentDescription = null,
186-
modifier = Modifier.size(SwitchDefaults.IconSize)
187-
)
181+
val thumbContent: (@Composable () -> Unit)? = remember(value) {
182+
if (value) {
183+
{
184+
Icon(
185+
imageVector = Icons.Outlined.Check,
186+
contentDescription = null,
187+
modifier = Modifier.size(SwitchDefaults.IconSize)
188+
)
189+
}
190+
} else {
191+
null
188192
}
189-
} else {
190-
null
191193
}
194+
192195
val density = LocalDensity.current
193196
CompositionLocalProvider(
194197
LocalDensity provides Density(

app/src/main/java/com/junkfood/seal/ui/component/PreferenceItems.kt

+36-27
Original file line numberDiff line numberDiff line change
@@ -352,17 +352,20 @@ fun PreferenceSwitch(
352352
checkedIcon: ImageVector = Icons.Outlined.Check,
353353
onClick: (() -> Unit) = {},
354354
) {
355-
val thumbContent: (@Composable () -> Unit)? = if (isChecked) {
356-
{
357-
Icon(
358-
imageVector = checkedIcon,
359-
contentDescription = null,
360-
modifier = Modifier.size(SwitchDefaults.IconSize),
361-
)
355+
val thumbContent: (@Composable () -> Unit)? = remember(isChecked) {
356+
if (isChecked) {
357+
{
358+
Icon(
359+
imageVector = checkedIcon,
360+
contentDescription = null,
361+
modifier = Modifier.size(SwitchDefaults.IconSize),
362+
)
363+
}
364+
} else {
365+
null
362366
}
363-
} else {
364-
null
365367
}
368+
366369
val interactionSource = remember { MutableInteractionSource() }
367370
Surface(
368371
modifier = Modifier.toggleable(
@@ -425,17 +428,20 @@ fun PreferenceSwitchWithDivider(
425428
onClick: (() -> Unit) = {},
426429
onChecked: () -> Unit = {}
427430
) {
428-
val thumbContent: (@Composable () -> Unit)? = if (isChecked) {
429-
{
430-
Icon(
431-
imageVector = checkedIcon,
432-
contentDescription = null,
433-
modifier = Modifier.size(SwitchDefaults.IconSize),
434-
)
431+
val thumbContent: (@Composable () -> Unit)? = remember(isChecked) {
432+
if (isChecked) {
433+
{
434+
Icon(
435+
imageVector = checkedIcon,
436+
contentDescription = null,
437+
modifier = Modifier.size(SwitchDefaults.IconSize),
438+
)
439+
}
440+
} else {
441+
null
435442
}
436-
} else {
437-
null
438443
}
444+
439445
Surface(
440446
modifier = Modifier.clickable(
441447
enabled = enabled,
@@ -635,17 +641,20 @@ fun PreferenceSwitchWithContainer(
635641
isChecked: Boolean,
636642
onClick: () -> Unit,
637643
) {
638-
val thumbContent: (@Composable () -> Unit)? = if (isChecked) {
639-
{
640-
Icon(
641-
imageVector = Icons.Outlined.Check,
642-
contentDescription = null,
643-
modifier = Modifier.size(SwitchDefaults.IconSize),
644-
)
644+
val thumbContent: (@Composable () -> Unit)? = remember(isChecked) {
645+
if (isChecked) {
646+
{
647+
Icon(
648+
imageVector = Icons.Outlined.Check,
649+
contentDescription = null,
650+
modifier = Modifier.size(SwitchDefaults.IconSize),
651+
)
652+
}
653+
} else {
654+
null
645655
}
646-
} else {
647-
null
648656
}
657+
649658
val interactionSource = remember { MutableInteractionSource() }
650659
Row(
651660
modifier = Modifier

0 commit comments

Comments
 (0)