Repository navigation
Closed
flutter/packages
#12585Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work lista: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)found in release: 3.19Found to occur in 3.19Found to occur in 3.19found in release: 3.22Found to occur in 3.22Found to occur in 3.22has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onp: material_uimaterial_ui package in flutter/packagesmaterial_ui package in flutter/packagespackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-androidAndroid applications specificallyAndroid applications specificallyteam-designOwned by Design Languages teamOwned by Design Languages teamtriaged-designTriaged by Design Languages teamTriaged by Design Languages team
Description
Steps to reproduce
When a PopupMenuButton widget receives accessibility focus on iOS it is announced by VoiceOver as "show menu, button" but on Android (13), TalkBack announces it as "detected, icon, more, button, show menu, double tap to activate".
Expected results
TalkBack should announce in the same way as VoiceOver "show menu, button".
Actual results
TalkBack announces the popup menu button as "detected, icon, more, button, show menu, double tap to activate".
Code sample
Code sample
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return const MaterialApp(
title: 'Bug Demo',
home: HomePage(title: 'Bug Demo'),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key, required this.title});
final String title;
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
var _themeMode = ThemeMode.light;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
actions: [
PopupMenuButton<String>(
position: PopupMenuPosition.under,
itemBuilder: (_) => const [
PopupMenuItem(
child: Text('Menu item 1'),
),
PopupMenuDivider(),
PopupMenuItem(
child: Text('Menu item 2'),
),
],
),
],
),
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Semantics(
label: 'another menu',
button: true,
//excludeSemantics: true,
child: IconButton(
onPressed: () {},
icon: const Icon(Icons.more_vert),
),
),
// const Divider(height: 40),
SegmentedButton(
showSelectedIcon: false,
segments: const [
ButtonSegment(
icon: Icon(Icons.light_mode),
label: Text('Light mode'),
value: ThemeMode.light,
),
ButtonSegment(
icon: Icon(Icons.dark_mode),
label: Text('Dark mode'),
value: ThemeMode.dark,
),
],
selected: {_themeMode},
onSelectionChanged: (selected) {
setState(() {
_themeMode = selected.first;
});
},
),
],
),
),
);
}
}Screenshots or Video
No response
Logs
No response
Flutter Doctor output
Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.19.5, on macOS 14.4.1 23E224 darwin-arm64, locale en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.2)
[✓] IntelliJ IDEA Ultimate Edition (version 2024.1)
[✓] Connected device (4 available)
[✓] Network resources
• No issues found!Metadata
Metadata
Assignees
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work lista: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)found in release: 3.19Found to occur in 3.19Found to occur in 3.19found in release: 3.22Found to occur in 3.22Found to occur in 3.22has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onp: material_uimaterial_ui package in flutter/packagesmaterial_ui package in flutter/packagespackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-androidAndroid applications specificallyAndroid applications specificallyteam-designOwned by Design Languages teamOwned by Design Languages teamtriaged-designTriaged by Design Languages teamTriaged by Design Languages team
Activity
darshankawar commentedon Apr 19, 2024
Thanks for the report. I do see the same behavior as reported. However, the difference in reading a button may well be platform-dependent. Will be interesting to see if this is specific to
PopupMenuButtononly or other material widgets / buttons show same behavior.stable, master flutter doctor -v
Announce PopupMenuButton with a child as a button
[material_ui] Announce PopupMenuButton with a child as a button (#12585)
github-actions commentedon Oct 3, 2026
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.