<p dir="auto">It looks like the way to define <code class="notranslate">InkWell</code> is to put it at the top of the stack so that we can see the ripple effect and the taps are captured by the <code class="notranslate">InkWell</code> widget.</p>
<p dir="auto">Im my case I have nested levels of containers each with their own <code class="notranslate">InkWells</code>. Now because of the way <code class="notranslate">InkWells</code> are designed, I can't have the inner container <code class="notranslate">InkWell</code> respond to taps because the Outer container <code class="notranslate">InkWell</code> is always on top of everything and prevents the tap being received by the Inner Container.</p>
<p dir="auto">Does anyone have a solution to this problem ? Below is a piece of code demonstrating this issue</p>
<p dir="auto"><a href="https://gist.github.com/manujbahl/d0ffaa1607f3b4ae8758bbae7378e469">https://gist.github.com/manujbahl/d0ffaa1607f3b4ae8758bbae7378e469</a></p>
<div class="highlight highlight-source-dart notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="import 'package:flutter/material.dart';

main() {    
    runApp(new TestSample());
}

class TestSample extends StatelessWidget{
    @override
    Widget build(BuildContext context) {
         var widget = new MaterialApp(
                home: new Scaffold(
                    body: new Center( 
                        child: new OuterContainerStack(),
                    )
                ),
            );
            return widget;
        }
}

class OuterContainerStack extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
        return new Stack(
            children: &lt;Widget&gt;[
                new OuterContainer(),
                new Positioned.fill(
                    child: new Material(
                        color: Colors.transparent,
                        child:new InkWell(
                            onTap: () {
                                print(&quot;Outer Container&quot;);
                            }
                        )
                    )
                )
            ],
        );

    }
}

class OuterContainer extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
        return new Container(
            width: 300.0,
            height: 300.0,
            color: Colors.blueAccent,
            child: new Column(
                mainAxisAlignment: MainAxisAlignment.center,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: &lt;Widget&gt;[
                    new InnerContainerStack()
                ],
            ),
        );

    }
}

class InnerContainerStack extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
        return new Stack(
            children: &lt;Widget&gt;[
                new InnerContainer(),
                new Positioned.fill(
                    child: new Material(
                        color: Colors.transparent,
                        child:new InkWell(
                            onTap: () {
                                print(&quot;Inner Container&quot;);
                            }
                        )
                    )
                )
            ],
        );

    }
}

class InnerContainer extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
        return new Container(
            width: 200.0,
            height: 200.0,
            color: Colors.redAccent
        );

    }
}"><pre class="notranslate"><span class="pl-k">import</span> <span class="pl-s">'package:flutter/material.dart'</span>;

<span class="pl-en">main</span>() {    
    <span class="pl-en">runApp</span>(<span class="pl-k">new</span> <span class="pl-c1">TestSample</span>());
}

<span class="pl-k">class</span> <span class="pl-c1">TestSample</span> <span class="pl-k">extends</span> <span class="pl-c1">StatelessWidget</span>{
    <span class="pl-k">@override</span>
    <span class="pl-c1">Widget</span> <span class="pl-en">build</span>(<span class="pl-c1">BuildContext</span> context) {
         <span class="pl-k">var</span> widget <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-c1">MaterialApp</span>(
                home<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">Scaffold</span>(
                    body<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">Center</span>( 
                        child<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">OuterContainerStack</span>(),
                    )
                ),
            );
            <span class="pl-k">return</span> widget;
        }
}

<span class="pl-k">class</span> <span class="pl-c1">OuterContainerStack</span> <span class="pl-k">extends</span> <span class="pl-c1">StatelessWidget</span> {
    <span class="pl-k">@override</span>
    <span class="pl-c1">Widget</span> <span class="pl-en">build</span>(<span class="pl-c1">BuildContext</span> context) {
        <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-c1">Stack</span>(
            children<span class="pl-k">:</span> <span class="pl-k">&lt;</span><span class="pl-c1">Widget</span><span class="pl-k">&gt;</span>[
                <span class="pl-k">new</span> <span class="pl-c1">OuterContainer</span>(),
                <span class="pl-k">new</span> <span class="pl-c1">Positioned</span>.<span class="pl-en">fill</span>(
                    child<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">Material</span>(
                        color<span class="pl-k">:</span> <span class="pl-c1">Colors</span>.transparent,
                        child<span class="pl-k">:</span><span class="pl-k">new</span> <span class="pl-c1">InkWell</span>(
                            onTap<span class="pl-k">:</span> () {
                                <span class="pl-en">print</span>(<span class="pl-s">"Outer Container"</span>);
                            }
                        )
                    )
                )
            ],
        );

    }
}

<span class="pl-k">class</span> <span class="pl-c1">OuterContainer</span> <span class="pl-k">extends</span> <span class="pl-c1">StatelessWidget</span> {
    <span class="pl-k">@override</span>
    <span class="pl-c1">Widget</span> <span class="pl-en">build</span>(<span class="pl-c1">BuildContext</span> context) {
        <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-c1">Container</span>(
            width<span class="pl-k">:</span> <span class="pl-c1">300.0</span>,
            height<span class="pl-k">:</span> <span class="pl-c1">300.0</span>,
            color<span class="pl-k">:</span> <span class="pl-c1">Colors</span>.blueAccent,
            child<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">Column</span>(
                mainAxisAlignment<span class="pl-k">:</span> <span class="pl-c1">MainAxisAlignment</span>.center,
                crossAxisAlignment<span class="pl-k">:</span> <span class="pl-c1">CrossAxisAlignment</span>.center,
                children<span class="pl-k">:</span> <span class="pl-k">&lt;</span><span class="pl-c1">Widget</span><span class="pl-k">&gt;</span>[
                    <span class="pl-k">new</span> <span class="pl-c1">InnerContainerStack</span>()
                ],
            ),
        );

    }
}

<span class="pl-k">class</span> <span class="pl-c1">InnerContainerStack</span> <span class="pl-k">extends</span> <span class="pl-c1">StatelessWidget</span> {
    <span class="pl-k">@override</span>
    <span class="pl-c1">Widget</span> <span class="pl-en">build</span>(<span class="pl-c1">BuildContext</span> context) {
        <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-c1">Stack</span>(
            children<span class="pl-k">:</span> <span class="pl-k">&lt;</span><span class="pl-c1">Widget</span><span class="pl-k">&gt;</span>[
                <span class="pl-k">new</span> <span class="pl-c1">InnerContainer</span>(),
                <span class="pl-k">new</span> <span class="pl-c1">Positioned</span>.<span class="pl-en">fill</span>(
                    child<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">Material</span>(
                        color<span class="pl-k">:</span> <span class="pl-c1">Colors</span>.transparent,
                        child<span class="pl-k">:</span><span class="pl-k">new</span> <span class="pl-c1">InkWell</span>(
                            onTap<span class="pl-k">:</span> () {
                                <span class="pl-en">print</span>(<span class="pl-s">"Inner Container"</span>);
                            }
                        )
                    )
                )
            ],
        );

    }
}

<span class="pl-k">class</span> <span class="pl-c1">InnerContainer</span> <span class="pl-k">extends</span> <span class="pl-c1">StatelessWidget</span> {
    <span class="pl-k">@override</span>
    <span class="pl-c1">Widget</span> <span class="pl-en">build</span>(<span class="pl-c1">BuildContext</span> context) {
        <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-c1">Container</span>(
            width<span class="pl-k">:</span> <span class="pl-c1">200.0</span>,
            height<span class="pl-k">:</span> <span class="pl-c1">200.0</span>,
            color<span class="pl-k">:</span> <span class="pl-c1">Colors</span>.redAccent
        );

    }
}</pre></div>
<p dir="auto">Internal: b/151678927</p>
<p dir="auto">Pictured: two ink wells, one for the card, and one for the smaller rectangular widget at the center of the card. The smaller rectangular widget has been tapped. The current Flutter behavior is on pictured to the left, the ideal behavior is pictured to the right.</p>
<p dir="auto">In Android, by default, ancestors do not respond/ripple when a descendant responds/ripples i.e. it follows the ideal behavior pictured to the right.</p>
<p dir="auto">Reasoning: say the descendant is a button, it does not make sense for the ancestor to ripple as tapping the button will not activate the <code class="notranslate">onTap</code> for the ancestor.</p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/9077461/35674273-025e943e-07a9-11e8-80a0-df31f6367b02.png"><img src="https://user-images.githubusercontent.com/9077461/35674273-025e943e-07a9-11e8-80a0-df31f6367b02.png" width="240/" style="max-width: 100%;"></a> <a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/9077461/35674276-03731c32-07a9-11e8-89e4-af0e62550d9b.png"><img src="https://user-images.githubusercontent.com/9077461/35674276-03731c32-07a9-11e8-89e4-af0e62550d9b.png" width="240/" style="max-width: 100%;"></a></p>
<h2 dir="auto">Steps to Reproduce</h2>
<p dir="auto">Run the sample code below, click the center of the card and two ripples will be generated for both ink response widgets. The ideal situation can be replicated by setting the ancestor <code class="notranslate">InkWell.onTap</code> to null, as annotated in the code.</p>
<div class="highlight highlight-source-dart notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="import &quot;package:flutter/material.dart&quot;;

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: const Text(&quot;Bug&quot;),
        ),
        body: new Card(
          child: new Container(
            height: 100.0,
            child: new InkWell(
              onTap: () =&gt; print(&quot;Set this onTap to null for ideal behavior&quot;),
              child: new Center(
                child: new InkWell(
                  onTap: () {},
                  child: new Container(
                    width: 50.0,
                    height: 50.0,
                  ),
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}"><pre class="notranslate"><span class="pl-k">import</span> <span class="pl-s">"package:flutter/material.dart"</span>;

<span class="pl-k">void</span> <span class="pl-en">main</span>() {
  <span class="pl-en">runApp</span>(<span class="pl-k">new</span> <span class="pl-c1">MyApp</span>());
}

<span class="pl-k">class</span> <span class="pl-c1">MyApp</span> <span class="pl-k">extends</span> <span class="pl-c1">StatelessWidget</span> {
  <span class="pl-k">@override</span>
  <span class="pl-c1">Widget</span> <span class="pl-en">build</span>(<span class="pl-c1">BuildContext</span> context) {
    <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-c1">MaterialApp</span>(
      home<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">Scaffold</span>(
        appBar<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">AppBar</span>(
          title<span class="pl-k">:</span> <span class="pl-k">const</span> <span class="pl-c1">Text</span>(<span class="pl-s">"Bug"</span>),
        ),
        body<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">Card</span>(
          child<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">Container</span>(
            height<span class="pl-k">:</span> <span class="pl-c1">100.0</span>,
            child<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">InkWell</span>(
              onTap<span class="pl-k">:</span> () <span class="pl-k">=&gt;</span> <span class="pl-en">print</span>(<span class="pl-s">"Set this onTap to null for ideal behavior"</span>),
              child<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">Center</span>(
                child<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">InkWell</span>(
                  onTap<span class="pl-k">:</span> () {},
                  child<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-c1">Container</span>(
                    width<span class="pl-k">:</span> <span class="pl-c1">50.0</span>,
                    height<span class="pl-k">:</span> <span class="pl-c1">50.0</span>,
                  ),
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}</pre></div>
<h2 dir="auto">Logs</h2>
<p dir="auto">Running flutter run and flutter analyze did not output anything.</p>
<h2 dir="auto">Flutter Doctor</h2>
<p dir="auto">Paste the output of running <code class="notranslate">flutter doctor</code> here.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[✓] Flutter (on Mac OS X 10.13.2 17C88, locale en-NZ, channel unknown)
    • Flutter at /Users/gnawf/flutter
    • Framework revision 6a42ed3f55 (3 weeks ago), 2018-01-12 15:12:26 -0800
    • Engine revision 05fe72d068
    • Tools Dart version 2.0.0-dev.16.0
    • Engine Dart version 2.0.0-edge.28757928b47b192efcec082c78258102beb03f78

[✓] Android toolchain - develop for Android devices (Android SDK 26.0.3)
    • Android SDK at /usr/local/opt/android-sdk/
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-27, build-tools 26.0.3
    • ANDROID_HOME = /usr/local/opt/android-sdk/
    • Java binary at: /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/bin/java
    • Java version Java(TM) SE Runtime Environment (build 1.8.0_144-b01)

[-] iOS toolchain - develop for iOS devices (Xcode 9.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 9.2, Build version 9C40b
    ✗ Your Mac needs to enabled for developer mode before using Xcode for the first time.
      Run 'sudo DevToolsSecurity -enable' to enable developer mode.
    ✗ libimobiledevice and ideviceinstaller are not installed. To install, run:
        brew install --HEAD libimobiledevice
        brew install ideviceinstaller
    ✗ ios-deploy not installed. To install:
        brew install ios-deploy
    • CocoaPods version 1.3.1

[✗] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.io/setup/#android-setup for detailed instructions).

[✓] IntelliJ IDEA Community Edition (version 2017.3.3)
    • Flutter plugin version 21.0.3
    • Dart plugin version 173.4301.22

[✓] Connected devices
    • iPhone 8 • 533B1ADF-56E5-4A63-9319-1F704E8845E0 • ios • iOS 11.2 (simulator)"><pre class="notranslate"><code class="notranslate">[✓] Flutter (on Mac OS X 10.13.2 17C88, locale en-NZ, channel unknown)
    • Flutter at /Users/gnawf/flutter
    • Framework revision 6a42ed3f55 (3 weeks ago), 2018-01-12 15:12:26 -0800
    • Engine revision 05fe72d068
    • Tools Dart version 2.0.0-dev.16.0
    • Engine Dart version 2.0.0-edge.28757928b47b192efcec082c78258102beb03f78

[✓] Android toolchain - develop for Android devices (Android SDK 26.0.3)
    • Android SDK at /usr/local/opt/android-sdk/
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-27, build-tools 26.0.3
    • ANDROID_HOME = /usr/local/opt/android-sdk/
    • Java binary at: /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/bin/java
    • Java version Java(TM) SE Runtime Environment (build 1.8.0_144-b01)

[-] iOS toolchain - develop for iOS devices (Xcode 9.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 9.2, Build version 9C40b
    ✗ Your Mac needs to enabled for developer mode before using Xcode for the first time.
      Run 'sudo DevToolsSecurity -enable' to enable developer mode.
    ✗ libimobiledevice and ideviceinstaller are not installed. To install, run:
        brew install --HEAD libimobiledevice
        brew install ideviceinstaller
    ✗ ios-deploy not installed. To install:
        brew install ios-deploy
    • CocoaPods version 1.3.1

[✗] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.io/setup/#android-setup for detailed instructions).

[✓] IntelliJ IDEA Community Edition (version 2017.3.3)
    • Flutter plugin version 21.0.3
    • Dart plugin version 173.4301.22

[✓] Connected devices
    • iPhone 8 • 533B1ADF-56E5-4A63-9319-1F704E8845E0 • ios • iOS 11.2 (simulator)
</code></pre></div>