Skip to content

Semantics focus does not move outside viewport when moving up or down #179450

@zemanux

Description

@zemanux

Steps to reproduce

  1. Enable TalkBack on an Android device.
  2. Move accessibility focus to the first/last visible ListTile.
  3. Perform the Previous item / Next item gesture (Swipe Left/Right).

Expected results

The focus should move to the previous / next ListTile, scrolling the ListView to make it visible.

Actual results

Semantic focus move to the SliverAppBar / TalkBack shortcut instead.

Code sample

Code sample
import 'package:flutter/material.dart';

void main() => runApp(const MaterialApp(home: MyApp()));

class MyApp extends StatelessWidget {
  const MyApp({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 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),
          ),
        ],
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration
scroll_semantics_issue.mp4

Logs

No response

Flutter Doctor output

Doctor output
[✓] Flutter (Channel master, 3.39.0-1.0.pre-408, on macOS 15.7.2 24G325 darwin-arm64, locale fr-FR) [3,2s]
    • Flutter version 3.39.0-1.0.pre-408 on channel master at /Users/emmanuel_lefebvre/fvm/versions/master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b3770ec6f4 (4 hours ago), 2025-12-04 05:15:39 -0500
    • Engine revision b3770ec6f4
    • Dart version 3.11.0 (build 3.11.0-200.1.beta)
    • DevTools version 2.53.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) [3,8s]
    • 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) [3,1s]
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 17B100
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web [6ms]
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Connected device (3 available) [13,2s]    
    • Pixel 7 Pro (mobile) • 35061FDH30024V • android-arm64  • Android 16 (API 36)
    • macOS (desktop)      • macos          • darwin-arm64   • macOS 15.7.2 24G325 darwin-arm64
    • Chrome (web)         • chrome         • web-javascript • Google Chrome 143.0.7499.41

[✓] Network resources [187ms]
    • All expected network resources are available.

Metadata

Metadata

Assignees

No one assigned

    Labels

    a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)c: regressionIt was better in the past than it is nowteam-accessibilityOwned by Framework Accessibility team (i.e. responsible for accessibility code in flutter/flutter)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions