Skip to content

[iOS] [a11y] Unable to navigate to bottom sliver in CustomScrollView with VoiceOver #142065

@ChristianEdwardPadilla

Description

@ChristianEdwardPadilla

Internal: b/321855070

Steps to reproduce

  1. Run the sample code.
  2. Enable VoiceOver.
  3. Swipe right to focus successive Flutter icon buttons.
  4. Continue to swipe right until you reach the end of the list (a larger Flutter icon).

Expected results

You should be able to reach the larger Flutter icon button by swiping right.

Actual results

You cannot reach the bottom of the list.

Note: This is iOS-only. I tested Android and web (Chrome on macOS) and you can reach the end of the list with voice assist enabled there.

Code sample

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

void main() => runApp(const SliverFillRemainingExampleApp());

class SliverFillRemainingExampleApp extends StatelessWidget {
  const SliverFillRemainingExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('SliverFillRemaining Sample')),
        body: const SliverFillRemainingExample(),
      ),
    );
  }
}

class SliverFillRemainingExample extends StatelessWidget {
  const SliverFillRemainingExample({super.key});

  @override
  Widget build(BuildContext context) {
    return CustomScrollView(
      cacheExtent: 9999,
      slivers: [
        SliverList(
          delegate: SliverChildListDelegate([
            const SizedBox(height: 12),
            ElevatedButton(
              onPressed: () {},
              child: FlutterLogo(
                size: 100,
              ),
            ),
            const SizedBox(height: 12),
            ElevatedButton(
              onPressed: () {},
              child: FlutterLogo(
                size: 100,
              ),
            ),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed: () {},
              child: FlutterLogo(
                size: 100,
              ),
            ),
            const SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {},
              child: FlutterLogo(
                size: 100,
              ),
            ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: () {},
              child: FlutterLogo(
                size: 100,
              ),
            ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: () {},
              child: FlutterLogo(
                size: 100,
              ),
            ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: () {},
              child: FlutterLogo(
                size: 100,
              ),
            ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: () {},
              child: FlutterLogo(
                size: 100,
              ),
            ),
            // Add more buttons to the list if the button below is initially
            // in the viewport.
          ]),
        ),
        SliverFillRemaining(
          hasScrollBody: false,
          child: ElevatedButton(
            onPressed: () {},
            child: FlutterLogo(
              size: 300,
            ),
          ),
        ),
      ],
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration

[Upload media here]

Logs

No response

Flutter Doctor output

Doctor output
[✓] Flutter (Channel google3, on macOS 14.2.1 23C71 darwin-x64, locale en)
    • Framework revision 1997bec685 (4 days ago), 2024-01-18T00:00:00.000
    • Engine revision b75d6d80d8
    • Dart version d6c08fa9bb

[✓] Android toolchain - develop for Android devices (Android SDK version Stable)
    • Android SDK at google3
    • Platform Stable, build-tools Stable
    • Java binary at: /Applications/Android Studio with
      Blaze.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      17.0.7+0-17.0.7b1000.6-10550314)

[✓] VS Code (version 1.85.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.74.0

[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A240d

[✓] Connected device (1 available)
    • Pixel 4 (mobile) • xx • android-arm64 • Android 13 (API 33)

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work lista: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)customer: googleVarious Google teamsfound in release: 3.16Found to occur in 3.16found in release: 3.19Found to occur in 3.19fyi-frameworkFor the attention of Framework teamhas reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-iosiOS applications specificallyteam-iosOwned by iOS platform teamtriaged-iosTriaged by iOS platform team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions