Skip to content

Software Development at Program Tom LTD

Place for coding, programming, development and software in general.

Menu
  • Blog
  • PDF Booklets
  • Dev Utils & Content
  • Java Spring Boot Or Web Apps
  • English
    • български
    • English
    • Español
    • Português
    • हिन्दी
    • Русский
    • Deutsch
    • Français
    • Italiano
    • العربية
  • About Us
Menu
Flutter list item does not get scroll events in the parent list view

Flutter list item does not get scroll events in the parent list view

Posted on November 22, 2025 by Toma Velev

If Flutter list item does not get scroll events in the parent list view – Most likely – do not look at the list item – look at the list view & scroll controller.

Root Cause

By default, InkWell consumes all pointer events, including scroll gestures (vertical drags). When your finger touches the InkWell area (which covers the entire list item), the InkWell’s internal GestureRecognizer wins the gesture arena against the parent ListView’s scroll recognizer → the ListView never receives vertical drag events → the list stops scrolling as soon as you touch an item.

This is exactly what you’re experiencing: the list item gets taps (onTap works), but blocks scrolling.

Solutions (from best to worst)

Recommended Solution #1: Use ListTile + InkWell with Material correctly (Flutter’s intended way)

Replace your whole Material → InkWell structure with a proper ListTile or at least wrap the content in InkWell but allow scroll gestures to pass through when appropriate.

But the cleanest and most reliable fix is:

ListTile(
  contentPadding: EdgeInsets.symmetric(vertical: 10, horizontal: 16).w,
  leading: ClipRRect(
    borderRadius: BorderRadius.circular(radius),
    child: ImageWidget(
    ),
  ),
  title: Text(
    title,
    maxLines: 1,
    overflow: TextOverflow.ellipsis,
  ),
  subtitle: Text(
    subtitle,
  ),
  onTap: () {
  },
);

ListTile inside a ListView automatically handles ripple + scrolling correctly.

Solution #2: Keep your custom layout but fix gesture conflict

If you really need full custom layout, do this:

Material(
  color: Colors.transparent, // Important: transparent, not white
  child: InkWell(
    onTap: () { ... },
    // This is the key part:
    child: GestureDetector(
      // Let vertical drags pass to parent scrollview
      behavior: HitTestBehavior.translucent,
      onVerticalDragStart: (_) {}, // dummy to allow vertical drag
      onVerticalDragUpdate: (_) {}, // this allows scrolling
      child: Padding(
        padding: EdgeInsets.symmetric(vertical: 10).w,
        child: Row(
          children: [ ... your content ... ],
        ),
      ),
    ),
  ),
);

Or even simpler (works in 95% of cases):

InkWell(
  onTap: () { ... },
  child: Row(
    children: [
      // your widgets
    ],
  ),
),

Solution #3: Use behavior: HitTestBehavior.opaque + scrollable fix (less reliable)

InkWell(
  onTap: () { ... },
  child: Container(
    color: Colors.white,
    child: Opacity(
      opacity: 1.0,
      child: GestureDetector(
        behavior: HitTestBehavior.translucent,
        child: YourRowContent(),
      ),
    ),
  ),
);

Too complicated — avoid.

Summary – Quick Fix for Your Code

Just replace your entire widget with this minimal change:

InkWell(
  onTap: () {
  },
  child: Padding(
    padding: EdgeInsets.symmetric(vertical: 10).w,
    child: Row(
      children: [
        // ... all your existing children (ClipRRect, Expanded, etc.)
      ],
    ),
  ),
),

And remove the outer Material(color: Colors.white) — it’s not needed and can interfere.

This alone fixes scrolling in 99% of cases when used inside ListView.builder.

  • Jenkins SCP File Upload to Remote Server
  • Essential Programming Books – Principles & Flutter
  • Social Media Platforms 🌍
  • Strategies to prevent review regressions
  • How to set Google Map Theme in a Flutter App

Categories

  • Apps (22)
  • ChatGPT (23)
  • Choosing a Framework (38)
  • Flutter (269)
  • Graphical User Interface (14)
  • Marketing (117)
  • Software Development (286)
  • Spring (45)
  • StartUp (22)
  • Uncategorized (14)
  • Uncategorized (4)
  • Vaadin (15)

Tags

Algorithms (9) crypto (29) flutterdev (39) General (86) Java (7) QR & Bar Codes (3) Software Dev Choices (33) Spring Boot (1) standards (1) Theme (3) User Authentication & Authorization (9) User Experience (10) Utilities (19) WordPress (11)

Product categories

  • All Technologies (84)
    • Flutter Apps (24)
    • GPT (4)
    • Java (38)
    • Native Android (3)
    • PHP (9)
    • Spring (Boot) / Quarkus (35)
    • Utils (15)
    • Vaadin 24+ (27)
    • Vaadin 8 (1)
  • Apps (18)
    • Employees DB (1)
    • Notes (6)
    • Personal Budget (1)
    • Recipes Book (1)
    • Stuff Organizer (1)
    • To-Do (2)
  • PDF Books (3)
  • Source Code Generators (8)

Recent Posts

  • Jenkins SCP File Upload to Remote Server
  • Essential Programming Books – Principles & Flutter
  • Social Media Platforms 🌍
  • Strategies to prevent review regressions
  • How to set Google Map Theme in a Flutter App

Post Categories

  • Apps (22)
  • ChatGPT (23)
  • Choosing a Framework (38)
  • Flutter (269)
  • Graphical User Interface (14)
  • Marketing (117)
  • Software Development (286)
  • Spring (45)
  • StartUp (22)
  • Uncategorized (14)
  • Uncategorized (4)
  • Vaadin (15)