Repository navigation
[SliverAppBar][Semantics] Voice over gets stuck when sliver app bar is collapsed. #60331
Copy link
Copy link
Closed
Closed
Copy link
Labels
P0Critical issues such as a build break or regressionCritical issues such as a build break or regressiona: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)customer: googleVarious Google teamsVarious Google teamsfound in release: 1.20Found to occur in 1.20Found to occur in 1.20frameworkflutter/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-iosiOS applications specificallyiOS applications specifically
Milestone
Description
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),
]),
),
],
),
),
);
}
}- Open the above app with voiceover enabled on an iOS device.
- Swipe to the right to navigate to the very bottom of the list.
- Swipe back up to the header, while it is still collapsed.
- 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)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P0Critical issues such as a build break or regressionCritical issues such as a build break or regressiona: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)Accessibility, e.g. VoiceOver or TalkBack. (aka a11y)customer: googleVarious Google teamsVarious Google teamsfound in release: 1.20Found to occur in 1.20Found to occur in 1.20frameworkflutter/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-iosiOS applications specificallyiOS applications specifically
Activity
chunhtai commentedon Jul 6, 2020
It looks like we do send correct semantics tree over to the ios accessbility bridge, it is not clear to me why it focus a wrong rectangle when it focus the header.
The other problem is we do not scroll up enough when we swipe back up to reveal the full header.
chunhtai commentedon Jul 7, 2020
It seems like the bug only happen when we change the accessbility tree dramatically due to the way we construct the semantics tree in scrollable.
The scrollable divide its children into two group (the code )
The first group is children that are excluded from scrolling and the second group is children that are included. The sliver app bar is jumping between this two group. it is included when it is not collapsed, and excluded when it is collapsed.
it seems like the native ios cannot handle such change when the focus is on the content in the customscrollview. I think this may be a native ios bug.
liuyingshan commentedon Jul 13, 2020
The other problem that we do not scroll up enough when we swipe back up to reveal the full header is still reproducible. Is there another issue tracking it?
chunhtai commentedon Jul 13, 2020
@liuyingshan I opened a issue to track the issue #61360
github-actions commentedon Aug 19, 2021
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.