-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Labels
⏳Bot is counting down the days until it unassigns the issueBot is counting down the days until it unassigns the issueP1High-priority issues at the top of the work listHigh-priority issues at the top of the work lista: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)customer: azulecustomer: cabooseSee go/flutter-3p-customer-trackerSee go/flutter-3p-customer-trackerfound in release: 3.29Found to occur in 3.29Found to occur in 3.29found in release: 3.30Found to occur in 3.30Found to occur in 3.30has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onplatform-webWeb applications specificallyWeb 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
As title says.
I'm using Autocomplete and ListTile to exemplify.
Steps to reproduce
- Create a app with SemanticsBinding.instance.ensureSemantics() in the main method;
- Add the Autocomplete and ListTile with onTap();
- Use Autocomplete and tap an option.
Expected results
Since the Autocomplete is being used, so the option item should get the user's click.
Actual results
But what happen is that the click "leaks" to the ListTile under it. The Autocomplete doesn’t identified the click, but the ListTile does.
Code sample
Code sample
import 'package:flutter/material.dart';
import 'package:flutter/semantics.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
SemanticsBinding.instance.ensureSemantics();
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(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
SearchWidget(),
for (int i = 0; i < 10; i++)
ListTile(
onTap: () {
debugPrint('You just tapped on item $i');
},
title: Text('Item $i'),
),
],
),
);
}
}
class SearchWidget extends StatelessWidget {
const SearchWidget({super.key});
@override
Widget build(BuildContext context) {
const List<String> kOptions = <String>[
'Apple',
'Banana',
'Cherry',
'Date',
'Fig',
'Grape',
'Kiwi',
'Lemon',
'Mango',
'Nectarine',
'Orange',
'Peach',
'Pear',
'Quince',
'Raspberry',
'Strawberry',
'Tangerine',
'Ugli fruit',
'Watermelon',
];
return Autocomplete<String>(
optionsBuilder: (TextEditingValue textEditingValue) async {
if (textEditingValue.text.isEmpty) {
return const Iterable<String>.empty();
}
return kOptions.where((String option) {
return option.contains(textEditingValue.text.toLowerCase());
});
},
onSelected: (item) {
debugPrint('You just selected $item');
},
);
}
}
Screenshots or Video
Screenshots / Video demonstration
Without SemanticsBinding:
without.mov
With SemanticsBinding:
with.mov
Logs
Logs
[Paste your logs here]Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.29.0, on macOS 15.3.1 24D70 darwin-x64, locale pt-BR) [721ms]
• Flutter version 3.29.0 on channel stable at /Users/ion/workspace/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 35c388afb5 (8 days ago), 2025-02-10 12:48:41 -0800
• Engine revision f73bfc4522
• Dart version 3.7.0
• DevTools version 2.42.2
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.1) [2,6s]
• Android SDK at /Users/ion/Library/Android/sdk
• Platform android-35, build-tools 35.0.1
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
This is the JDK bundled with the latest Android Studio installation on this machine.
To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
• Java version OpenJDK Runtime Environment (build 21.0.4+-12422083-b607.1)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 16.2) [1.521ms]
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 16C5032a
• CocoaPods version 1.16.2
[✓] Chrome - develop for the web [70ms]
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2024.2) [69ms]
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 21.0.4+-12422083-b607.1)
[✓] IntelliJ IDEA Community Edition (version 2024.3.3) [66ms]
• IntelliJ at /Applications/IntelliJ IDEA CE.app
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
[✓] VS Code (version 1.97.2) [30ms]
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.104.0
[✓] Connected device (2 available) [6,8s]
• macOS (desktop) • macos • darwin-x64 • macOS 15.3.1 24D70 darwin-x64
• Chrome (web) • chrome • web-javascript • Google Chrome 133.0.6943.99
[✓] Network resources [469ms]
• All expected network resources are available.
• No issues found!tddang-linagora, desmond206x, markusrubey and pedromassango
Metadata
Metadata
Assignees
Labels
⏳Bot is counting down the days until it unassigns the issueBot is counting down the days until it unassigns the issueP1High-priority issues at the top of the work listHigh-priority issues at the top of the work lista: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)customer: azulecustomer: cabooseSee go/flutter-3p-customer-trackerSee go/flutter-3p-customer-trackerfound in release: 3.29Found to occur in 3.29Found to occur in 3.29found in release: 3.30Found to occur in 3.30Found to occur in 3.30has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onplatform-webWeb applications specificallyWeb 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)
Type
Projects
Status
Done