-
Notifications
You must be signed in to change notification settings - Fork 28.9k
Open
Labels
a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)c: regressionIt was better in the past than it is nowIt was better in the past than it is nowfound 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 onplatform-iosiOS applications specificallyiOS applications specificallyteam-accessibilityOwned by Framework Accessibility team (i.e. responsible for accessibility code in flutter/flutter)Owned by Framework Accessibility team (i.e. responsible for accessibility code in flutter/flutter)
Description
Steps to reproduce
- Activate Voice Control Show Numbers
- Run Sample Code with Flutter 3.29.0
- Run Sample Code with Flutter 3.32.5
Expected results
Voice Control Show Numbers displays a label/tooltip that can be interacted with for every actionable semantic widget.
Actual results
When a Semantics widget has an ExcludeSematics widget as child no label/tooltip is shown.
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 MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
SemanticWidget(label: 'Semantics'),
SemanticWidgetWithExcludeSemantics(label: 'ExcludeSemantics'),
],
),
),
);
}
}
class SemanticWidgetWithExcludeSemantics extends StatelessWidget {
final String label;
@override
Widget build(BuildContext context) {
return Semantics(
button: true,
label: label,
child: ExcludeSemantics(
child: InkWell(
onTap: () => print('clicked : $label'),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
border: Border.all(width: 1, color: Colors.black),
),
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Text(label),
),
),
),
),
);
}
const SemanticWidgetWithExcludeSemantics({super.key, required this.label});
}
class SemanticWidget extends StatelessWidget {
final String label;
@override
Widget build(BuildContext context) {
return Semantics(
button: true,
label: label,
child: InkWell(
onTap: () => print('clicked : $label'),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
border: Border.all(width: 1, color: Colors.black),
),
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Text(label),
),
),
),
);
}
const SemanticWidget({super.key, required this.label});
}
Screenshots or Video
Logs
Logs
[Paste your logs here]
Flutter Doctor output
Doctor output
... exclude_semantics % flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.32.5, on macOS 14.6.1 23G93 darwin-arm64, locale en-DE)
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 16.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.2)
[✓] IntelliJ IDEA Ultimate Edition (version 2024.2.4)
[✓] IntelliJ IDEA Community Edition (version 2025.1)
[✓] VS Code (version 1.101.0)
[✓] Connected device (3 available)
[✓] Network resources
• No issues found!
Metadata
Metadata
Assignees
Labels
a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)c: regressionIt was better in the past than it is nowIt was better in the past than it is nowfound 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 onplatform-iosiOS applications specificallyiOS applications specificallyteam-accessibilityOwned by Framework Accessibility team (i.e. responsible for accessibility code in flutter/flutter)Owned by Framework Accessibility team (i.e. responsible for accessibility code in flutter/flutter)