Repository navigation
Closed
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)f: scrollingViewports, list views, slivers, etc.Viewports, list views, slivers, etc.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 onplatform-androidAndroid applications specificallyAndroid applications specificallyteam-androidOwned by Android platform teamOwned by Android platform teamtriaged-androidTriaged by Android platform teamTriaged by Android platform teamwaiting for responseThe Flutter team cannot make further progress on this issue until the original reporter respondsThe Flutter team cannot make further progress on this issue until the original reporter responds
Description
Steps to reproduce
Create a scrollable widget (e.g., SingleChildScrollView or ListView) containing a Column.
Add multiple children (e.g., Texts, Buttons) inside the Column.
Enable TalkBack on an Android device.
Try navigating through the screen using TalkBack gestures.
Expected results
TalkBack should move focus linearly through each accessible item in order,, without skipping or looping.
Actual results
TalkBack skips some items inside the scrollable widget.
In some cases, it jumps back to the top instead of progressing.
This happens more often when nesting widgets within the Column.
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: _AnimationBackground(
body: Semantics(
explicitChildNodes: true,
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
...List.generate(
100,
(index) => IndexedSemantics(
index: index,
child: Container(
padding: const EdgeInsets.all(80),
color: Colors.red,
child: Text('teste $index'),
),
),
),
],
),
),
),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}
class _AnimationBackground extends StatelessWidget {
final Widget body;
const _AnimationBackground({required this.body});
@override
Widget build(BuildContext context) {
return ScrollConfiguration(
behavior: ScrollConfiguration.of(context).copyWith(scrollbars: false),
child: ListView(children: [body]),
);
}
}
Screenshots or Video
Screenshots / Video demonstration
[Upload media here]
Logs
Logs
[Paste your logs here]Flutter Doctor output
Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.32.5, on macOS 26.0 25A5316i darwin-arm64, locale pt-BR)
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.1)
[✓] Xcode - develop for iOS and macOS (Xcode 16.4)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.3)
[✓] 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)f: scrollingViewports, list views, slivers, etc.Viewports, list views, slivers, etc.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 onplatform-androidAndroid applications specificallyAndroid applications specificallyteam-androidOwned by Android platform teamOwned by Android platform teamtriaged-androidTriaged by Android platform teamTriaged by Android platform teamwaiting for responseThe Flutter team cannot make further progress on this issue until the original reporter respondsThe Flutter team cannot make further progress on this issue until the original reporter responds
Activity
[-]Accessibility skips or resets focus talkback in scrollable Column or ListView (Testing in Android)[/-][+][Accessibility] Accessibility skips or resets focus talkback in scrollable Column or ListView (Testing in Android)[/+]darshankawar commentedon Aug 1, 2025
Thanks for the report @rod-moraes
I tried the given code sample with latest stable and master versions on Android as shown below and observed that I was able to traverse to each element properly upon scrolling up and down:
Screen_Recording_20250801_152459.mp4
Please check if above is correct interpretation of behavior you are reporting. If not, please provide us a short video that shows the issue.
rod-moraes commentedon Aug 1, 2025
When I swipe from left to right or right to left, it’s supposed to move to the next item. But as you can see in the video, at some point the focus gets lost — I can’t select anything anymore unless I perform a specific gesture.
However, for a blind user, this is a big problem because they lose all reference. The expected behavior is that the screen reader should continue moving to the next item without getting lost.
trim.11ECE61E-AD4F-4153-83EA-029FCBF04771.MOV
darshankawar commentedon Aug 4, 2025
Thanks for the update. Now I was able to replicate the reported behavior.
19 remaining items
rod-moraes commentedon Aug 25, 2025
@ash2moon
Using the
CustomScrollView, you can see that it depends on the spacing between the semantic items and their position on the screen. At the start of the video, you can see the issue happening, but when I scroll even slightly, it works. This happens because of the distance between the items—if the spacing were larger, the problem would occur more often.Additionally, the problem is that I have lists and other components on the screen that cannot be managed with a ListView.builder, since they are separate components within a single screen. The example I gave is simple so you can reproduce the issue, but in the actual project I cannot replace the components. Because of that, this problem mainly occurs where I have large spacings depending on the context (for example, at the end of a background and the start of a bottom bar).
So I’d like to emphasize that this is not a case of “just use a ListView.builder,” because in this scenario it’s not possible to replace components. On this screen, I use a CustomScrollView with slivers, including sliver app bars, and the layout is responsive and depends on other elements.
Screen_Recording_20250825_094800.mp4
rod-moraes commentedon Aug 25, 2025
In this other example, it’s the example of the code I sent with
SingleChildScrollView.Screen_Recording_20250825_094441.mp4
ash2moon commentedon Aug 25, 2025
Hi @rod-moraes, the code samples I tried were from this comment and this comment. Can you confirm that the videos you just posted are from those comments? If so, just to confirm can you list the device and
flutter doctoroutput?I was able to replicate the issue from the original report, but the issue with that was due to ListView trying to render one large Column as I mentioned earlier.
rod-moraes commentedon Aug 26, 2025
Hi @ash2moon
Yes, my tests were with the code you mentioned. If it works fine for you, try increasing the spacing of the Column. I believe it has to do with this empty space causing things to get lost.
Adb devices:
RQ8R9035DLV device 1-0 product:m62xx model:SM_M625F device:m62 transport_id:5Flutter Doctor:
aakashawalkar commentedon Jan 27, 2026
Hi @darshankawar @jmagman,
I’m encountering this issue on mobile web — specifically on iOS browsers such as Safari and Chrome — when using Flutter version 3.38.6.
focus_outline_disapper.mp4
chunhtai commentedon Jan 27, 2026
can you try if you can reproduce the issue with the latest master branch, we recently pushed a pr to fix a similar issue
aakashawalkar commentedon Jan 30, 2026
Hi @chunhtai, Thanks for your quick response.
I tried to reproduce the issue using the latest master branch with a fresh flutter app, and it works as expected.
However, I’m able to reproduce the issue in my current project with the latest master branch.
github-actions commentedon Feb 17, 2026
Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now.
If you find this problem please file a new issue with the same description, what happens, logs and the output of 'flutter doctor -v'. All system setups can be slightly different so it's always better to open new issues and reference the related ones.
Thanks for your contribution.
github-actions commentedon Mar 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.