Skip to content

Disable tap on track of iOS CupertinoScrollbar on iPhone/iPad #120429

@woutervanwijk

Description

@woutervanwijk

If you tap the track of the CupertinoScrollbar (so below or above the thumb) on iOS, it scrolls a full page. This is not like native. It's also irritating for a user because of accidental scrolls if you tap the (invisible) track. This is ok on Desktop and Web, but not on iPhone & iPad.

Steps to Reproduce

  1. Create a scrolling widget with a CupertinoScrollbar on iOS

Expected results:
A scrollbar that behaves exactly like iOS scrollbar. It's close, but if you tap the track of the scrollbar (so below or above the thumb), it scrolls a full page. This is not like native

Actual results:
It is always interactive. This is not the case on the native scrollbar in iOS. If you tap the track on native iOS scrollbar, nothing happens

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

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    List<Widget> children = [];
    for (int i = 0; i < 200; i++) {
      children.add(SizedBox(height: 30, child: Text('$i')));
    }
    return MaterialApp(
        home: Scaffold(
            body: CupertinoScrollbar(
      child: ListView(
        children: children,
      ),
    )));
  }
}
Logs
[✓] Flutter (Channel stable, 3.7.1, on macOS 13.1 22C65 darwin-arm64, locale nl-NL)
    • Flutter version 3.7.1 on channel stable at /Users/wouter/Library/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 7048ed95a5 (9 days ago), 2023-02-01 09:07:31 -0800
    • Engine revision 800594f1f4
    • Dart version 2.19.1
    • DevTools version 2.20.1

[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
    • Android SDK at /Users/wouter/Library/Android/sdk
    • Platform android-33, build-tools 32.0.0
    • ANDROID_SDK_ROOT = /Users/wouter/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14C18
    • CocoaPods version 1.11.3

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

[✓] Android Studio (version 2021.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work lista: fidelityMatching the OEM platforms betterf: cupertinoflutter/packages/flutter/cupertino repositoryf: scrollingViewports, list views, slivers, etc.found in release: 3.7Found to occur in 3.7found in release: 3.8Found to occur in 3.8frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-iosiOS applications specificallyteam-designOwned by Design Languages teamtriaged-designTriaged by Design Languages team

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions