-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
Labels
a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)customer: googleVarious Google teamsVarious Google teamsf: material designflutter/packages/flutter/material repository.flutter/packages/flutter/material repository.found in release: 3.32Found to occur in 3.32Found to occur in 3.32found in release: 3.33Found to occur in 3.33Found to occur in 3.33frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer versionteam-webOwned by Web platform teamOwned by Web platform team
Description
Help us understand the severity of this issue
- causing severe production issues e.g. malfunctions or data loss
- blocking next binary release
- blocking a client feature launch within a quarter
- nice-to-have but does not block a launch within the next quarter
Steps to reproduce
Use CheckedPopupMenuButton within a PopupMenu
Expected results
When using a screenreader, I expect a CheckedPopupMenuButton with checked=true to read as "selected" or "checked"
Actual results
CheckedPopupMenuButton items with checked=true are indistinguishable from those that aren't checked/selected.
Code sample
Code sample
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(body: Center(child: PopupMenuExample())),
);
}
}
class PopupMenuExample extends StatefulWidget {
const PopupMenuExample({super.key});
@override
State<StatefulWidget> createState() => PopupMenuExampleState();
}
class PopupMenuExampleState extends State<PopupMenuExample> {
String selectedString = "OMG";
final possibleSelections = ["OMG", "LOL", "ROFL", "WOW"];
@override
Widget build(BuildContext context) {
return Container(
child: PopupMenuButton<String>(
key: ValueKey<String>('layerDropdown'),
initialValue: selectedString,
onSelected: (selection) {
setState(() => selectedString = selection);
},
itemBuilder: (context) => [
for (final stringVal in possibleSelections)
CheckedPopupMenuItem(
value: stringVal,
checked: stringVal == selectedString,
child: Text(stringVal),
),
],
),
);
}
}
Screenshots or Video
Screenshots / Video demonstration
[Upload media here]
Screen.Recording.2025-07-01.at.2.12.17.PM.mov
Logs
Logs
[Paste your logs here]Flutter Doctor output
Doctor output
[Paste your output here]Metadata
Metadata
Assignees
Labels
a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)customer: googleVarious Google teamsVarious Google teamsf: material designflutter/packages/flutter/material repository.flutter/packages/flutter/material repository.found in release: 3.32Found to occur in 3.32Found to occur in 3.32found in release: 3.33Found to occur in 3.33Found to occur in 3.33frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer versionteam-webOwned by Web platform teamOwned by Web platform team