Repository navigation
Labels
a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)a: text inputEntering text in a text field or keyboard related problemsEntering text in a text field or keyboard related problemsassigned for triageissue is assigned to a domain expert for further triageissue is assigned to a domain expert for further triagec: regressionIt was better in the past than it is nowIt was better in the past than it is nowcustomer: cabooseSee go/flutter-3p-customer-trackerSee go/flutter-3p-customer-trackerhas 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-webOwned by Web platform teamOwned by Web platform team
Description
Steps to reproduce
- Create a Flutter web app with Go router and an Autocomplete widget
- Activate the flutter web's semantic tree (
SemanticsBinding.instance.ensureSemantics();) - Run the app on any browser
- Click the text field and try to type "aaa" with the keyboard
Expected results
The options overlay appears, the text field keeps focus. The user can continue typing to refine the search. Each new character updates the options list.
Actual results
When the options overlay is triggered, the text field loses keyboard focus. Any subsequent keystrokes are silently swallowed. The cursor disappears. The user must click the field again to regain focus, at which point the overlay appears but the focus is again stolen — making the field impossible to use.
Code sample
Code sample
import 'package:flutter/material.dart';
import 'package:flutter/semantics.dart';
import 'package:go_router/go_router.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
SemanticsBinding.instance.ensureSemantics();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
MyApp({super.key});
final _router = GoRouter(
routes: [GoRoute(path: '/', builder: (context, state) => const _Screen())],
);
@override
Widget build(BuildContext context) =>
MaterialApp.router(routerConfig: _router);
}
class _Screen extends StatelessWidget {
const _Screen();
static const List<String> _options = ['Apple', 'Banana', 'Cherry'];
@override
Widget build(BuildContext context) => Scaffold(
body: Center(
child: Autocomplete<String>(
optionsBuilder: (TextEditingValue v) => v.text.isEmpty
? []
: _options.where(
(o) => o.toLowerCase().contains(v.text.toLowerCase()),
),
onSelected: (s) => debugPrint('Selected: $s'),
),
),
);
}Tested flutter versions
We have tested the following versions :
| Version Flutter | Behavior |
|---|---|
| 3.38.10 | ✅ Works |
| 3.41.3 | ❌ Broken |
| 3.44.0 | ❌ Broken |
Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.44.0, on macOS 26.4.1 25E253 darwin-arm64, locale fr-FR) [441ms]
• Flutter version 3.44.0 on channel stable at /Users/saruka/fvm/versions/3.44.0
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 559ffa3f75 (3 weeks ago), 2026-05-15 14:13:13 -0700
• Engine revision 4c525dac5e
• Dart version 3.12.0
• DevTools version 2.57.0
• Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets,
enable-swift-package-manager, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration
[✓] Android toolchain - develop for Android devices (Android SDK version 36.1.0) [1 297ms]
• Android SDK at /Users/saruka/Library/Android/sdk
• Emulator version 35.4.9.0 (build_id 13025442) (CL:N/A)
• Platform android-36, build-tools 36.1.0
• Java binary at: /Users/saruka/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.10+-117844308-b1163.108)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 26.5) [1 111ms]
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 17F42
• CocoaPods version 1.16.2
[✓] Chrome - develop for the web [5ms]
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Connected device (2 available) [6,5s]
• macOS (desktop) • macos • darwin-arm64 • macOS 26.4.1 25E253 darwin-arm64
• Chrome (web) • chrome • web-javascript • Google Chrome 148.0.7778.216
[✓] Network resources [131ms]
• All expected network resources are available.
• No issues found!Metadata
Metadata
Assignees
Labels
a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)a: text inputEntering text in a text field or keyboard related problemsEntering text in a text field or keyboard related problemsassigned for triageissue is assigned to a domain expert for further triageissue is assigned to a domain expert for further triagec: regressionIt was better in the past than it is nowIt was better in the past than it is nowcustomer: cabooseSee go/flutter-3p-customer-trackerSee go/flutter-3p-customer-trackerhas 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-webOwned by Web platform teamOwned by Web platform team
Activity
mbcorona commentedon Jun 4, 2026
Hello @SarukaUsagi , thanks for reporting. Reproduced on Web with Flutter 3.44.1. Routing to the accessibility team for investigation.
hannah-hyj commentedon Jun 10, 2026
From triage: It seems like some dom element is stealing focus
flutter-triage-bot commentedon Jun 10, 2026
The
fyi-weblabel is redundant with theteam-weblabel.The
triaged-accessibilitylabel is irrelevant if there is noteam-accessibilitylabel orfyi-accessibilitylabel.Wrap routing in FocusScope in WidgetsApp.router (flutter#192601)
github-actions commentedon Oct 1, 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.