Skip to content

[SliverAppBar][Semantics] Voice over gets stuck when sliver app bar is collapsed.  #60331

@johnsonmh

Description

@johnsonmh

Internal: b/158621034

When you have an app with a SliverAppBar and a SliverList body, and you're using voiceover on iOS, scrolling to the bottom of the list and then back up will get the voice over stuck in the status bar.

Additionally, an extra "Heading" node seems to be added.

Steps to Reproduce

Using the following example app:

import 'package:flutter/material.dart';

void main() {
  runApp(Demo());
}

class Demo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: CustomScrollView(
          slivers: [
            SliverAppBar(
              pinned: true,
              expandedHeight: 200,
              flexibleSpace: Container(height: 100),
            ),
            SliverList(
              delegate: SliverChildListDelegate([
                for (var i = 0; i < 50; i ++)
                  Text('This is text. ' * 45),
              ]),
            ),
          ],
        ),
      ),
    );
  }
}
  1. Open the above app with voiceover enabled on an iOS device.
  2. Swipe to the right to navigate to the very bottom of the list.
  3. Swipe back up to the header, while it is still collapsed.
  4. Notice that the voice over tool gets stuck in the status bar, even when you swipe left and right, you can not get back to the page.

Expected results:
Swiping left to navigate back up the list will put you back in AppBar.

Actual results:
Voice Over gets stuck in the status bar, back button, nor text in list, can not be navigated to.

Video of bug (error state begins at the ~8 second mark):
https://photos.app.goo.gl/bYAsCBz4ixdZmCcg9

Flutter Doctor
[✓] Flutter (Channel master, 1.20.0-1.0.pre.135, on Mac OS X 10.15.5 19F96, locale en-US)

[!] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[!] Xcode - develop for iOS and macOS (Xcode 11.3)
    ✗ CocoaPods installed but not working.
        You appear to have CocoaPods installed but it is not working.
        This can happen if the version of Ruby that CocoaPods was installed with is different from the one being used to invoke it.
        This can usually be fixed by re-installing CocoaPods. For more info, see https://github.com/flutter/flutter/issues/14293.
      To re-install CocoaPods, run:
        sudo gem install cocoapods
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.0)
[✓] Android Studio (version 3.5)
[✓] Connected device (4 available)

Metadata

Metadata

Assignees

Labels

P0Critical issues such as a build break or regressiona: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)customer: googleVarious Google teamsfound in release: 1.20Found to occur in 1.20frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-iosiOS applications specifically

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions