Skip to content

iOS fling causes NestedScrollView inner and outer scrollables get out of sync #13496

@collinjackson

Description

@collinjackson

Steps to Reproduce

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text('test'),
      ),
      body: new NestedScrollView(
        headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
          return <Widget>[
            new SliverToBoxAdapter(
              child: new Container(
                color: Colors.red,
                height: 600.0,
              ),
            ),
          ];
        },
        body: new ListView.builder(
          itemBuilder: (BuildContext context, int index) {
            return new ListTile(title: new Text('Item $index'));
          }
        ),
      ),
    );
  }
}

Fling upwards on the red box, strong and fast. The outer scrollable scrolls fast for a bit, then "sticks" before the red box scrolls out of view and the inner scrollable starts scrolling. It feels like the momentum somehow got transferred to the inner scrollable.

untitled5

So far I've only seen this on the iOS simulator and phones. I was not able to trigger it on my Galaxy S7.

Flutter Analyze

$ flutter analyze
Analyzing /Users/jackson/git/so_scratch2...
No issues found!

Flutter Doctor

[✓] Flutter (on Mac OS X 10.12.6 16G1036, locale en-US, channel unknown)
• Flutter at /Users/jackson/git/flutter
• Framework revision f382ab4 (6 days ago), 2017-12-05 16:50:19 -0800
• Engine revision b57fca0
• Tools Dart version 1.25.0-dev.11.0
• Engine Dart version 2.0.0-edge.d4cfecb1065d322d3670df7e9ec9a0cc2d4b90f0

[✓] Android toolchain - develop for Android devices (Android SDK 26.0.2)
• Android SDK at /Users/jackson/Library/Android/sdk
• Android NDK location not configured (this optional configuration is useful for native profiling support)
• Platform android-26, build-tools 26.0.2
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_112-release-b06)

[-] iOS toolchain - develop for iOS devices (Xcode 8.3.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 8.3.3, Build version 8E3004b
✗ libimobiledevice and ideviceinstaller are not installed. To install, run:
brew install --HEAD libimobiledevice
brew install ideviceinstaller
• ios-deploy 1.9.2
• CocoaPods version 1.3.1

[✓] Android Studio (version 2.3)
• Android Studio at /Applications/Android Studio.app/Contents
• Java version OpenJDK Runtime Environment (build 1.8.0_112-release-b06)

[✓] IntelliJ IDEA Community Edition (version 2017.2.5)
• Flutter plugin version 17.0
• Dart plugin version 172.4155.35

[✓] Connected devices
• iPhone 7 Plus • A712DA0B-FEBD-4746-9BAF-45ECE15EDDBA • ios • iOS 10.3 (simulator)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions