-
Notifications
You must be signed in to change notification settings - Fork 30.1k
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.38Found to occur in 3.38Found to occur in 3.38found in release: 3.39Found to occur in 3.39Found to occur in 3.39frameworkflutter/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 onteam-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)triaged-accessibilityTriaged by Framework Accessibility teamTriaged by Framework Accessibility team
Description
Steps to reproduce
- Enable accessibility services (TalkBack or VoiceOver) on the device.
- Open a screen containing a CustomScrollView with a PinnedHeaderSliver and a list of items (e.g., SliverList).
- Scroll down the list so that the top items are off-screen.
- Navigate backwards (swipe left / previous item gesture) to scroll up toward the top of the list.
Expected results
The list should be fully scrolled to the top (displaying the very first item) before the semantic focus moves to the widget preceding the list or the pinned header. The user should be able to navigate through all remaining list items before leaving the list context.
Actual results
The PinnedHeaderSliver takes the semantic focus immediately when navigating up, effectively "skipping" the remaining items at the top of the list or preventing the list from scrolling all the way back to the start.
Code sample
Code sample
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: AccessibilityTestPage()));
}
class AccessibilityTestPage extends StatelessWidget {
const AccessibilityTestPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
slivers: <Widget>[
const SliverAppBar(
pinned: true,
expandedHeight: 100.0,
title: Text('Pinned Semantic Focus'),
backgroundColor: Colors.blue,
),
// The Pinned Header
const PinnedHeaderSliver(
child: ColoredBox(
color: Colors.amber,
child: ListTile(title: Text('Pinned Semantic Focus')),
),
),
// The List
SliverList(
delegate: SliverChildBuilderDelegate((BuildContext context, int index) {
return ListTile(
title: Text('Item $index'),
subtitle: const Text('Scroll down then navigate back up'),
);
}, childCount: 50),
),
],
),
);
}
}demo.mp4
Screenshots or Video
Screenshots / Video demonstration
[Upload media here]
Logs
No response
Flutter Doctor output
Doctor output
[✓] Flutter (Channel master, 3.39.0-1.0.pre-261, on macOS 15.7.2 24G325 darwin-arm64, locale fr-FR) [1 826ms]
• Flutter version 3.39.0-1.0.pre-261 on channel master at /Users/emmanuel_lefebvre/fvm/versions/master
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 12b5c1cfdf (3 days ago), 2025-11-22 03:12:08 +0200
• Engine revision 216e5124a0
• Dart version 3.11.0 (build 3.11.0-162.0.dev)
• DevTools version 2.52.0
• Pub download mirror https://artifact.socrate.vsct.fr/artifactory/api/pub/all-pub
• Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets, omit-legacy-version-file,
enable-lldb-debugging, enable-uiscene-migration
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.1) [1 816ms]
• Android SDK at /Users/emmanuel_lefebvre/Library/Android/sdk
• Emulator version 36.2.12.0 (build_id 14214601) (CL:N/A)
• Platform android-36, 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.8+-14196175-b1038.72)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 26.1.1) [1 598ms]
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 17B100
• CocoaPods version 1.16.2
[✓] Chrome - develop for the web [7ms]
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Connected device (4 available) [6,8s]
• Pixel 7 Pro (mobile) • 35061FDH30024V • android-arm64 • Android 16 (API 36)
• sdk gphone64 arm64 (mobile) • emulator-5554 • android-arm64 • Android 15 (API 35) (emulator)
• macOS (desktop) • macos • darwin-arm64 • macOS 15.7.2 24G325 darwin-arm64
• Chrome (web) • chrome • web-javascript • Google Chrome 142.0.7444.176
! Error: Browsing on the local area network for iPhone XS. Ensure the device is unlocked and attached with a cable or associated with the same local area network as this Mac.
The device must be opted into Developer Mode to connect wirelessly. (code -27)
[✓] Network resources [547ms]
• All expected network resources are available.
• No issues found!Reactions are currently unavailable
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.38Found to occur in 3.38Found to occur in 3.38found in release: 3.39Found to occur in 3.39Found to occur in 3.39frameworkflutter/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 onteam-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)triaged-accessibilityTriaged by Framework Accessibility teamTriaged by Framework Accessibility team