title: How does onTap VoidCallback handler work when it's an async (returning a Future<Null>)?
body: <p>I'm trying to push a route to display a ListView item when that item is tapped (<code>onTap</code>). The <code>onTap</code> property for <code>InkWell</code> is defined as a <code>VoidCallback</code>. However, I would like to be able to receive a return value from the callback, indicating whether the user has modified said item in the dialog that was opened.</p>
  
  <p>Assigning a <code>Future&lt;Null&gt; async</code> function to <code>onTap</code> seems to be OK, as per the Shrine Demo (<code>shrine_home.dart</code> in the flutter_gallery example):</p>
  
  <pre><code>  Future&lt;Null&gt; _showOrderPage(Product product) async {
      final Order order = _shoppingCart[product] ?? new Order(product: product);
      final Order completedOrder = await Navigator.push(context, new ShrineOrderRoute(
        order: order,
        builder: (BuildContext context) {
          return new OrderPage(
            order: order,
            products: _products,
            shoppingCart: _shoppingCart,
          );
        }
      ));
      assert(completedOrder.product != null);
      if (completedOrder.quantity == 0)
        _shoppingCart.remove(completedOrder.product);
    }
  </code></pre>
  
  <p>Why and how is this working? Thanks.</p>