title: Widget don't rebuild with riverpod when changing state from child
body: <p>I am using riverpod to build my app and i am struggling to build a simple add to favorite feature. I have a list of products and a child Consumer widget that is a card with add to favorite button.</p>
  <p>When I change the state of the products from the child cards the ui don't rebuild.</p>
  <p>here is the git repository <a href="https://github.com/nisa10880/riverpod_difficulties" rel="nofollow noreferrer">https://github.com/nisa10880/riverpod_difficulties</a></p>
  <pre><code>Consumer(
      builder: (context, watch, child) =&gt;
          watch(getProductsFutureProvider).when(
              data: (p) {
                final products = watch(productListStateProvider).state;
  
                return ListView.builder(
                    itemCount: products.length,
                    itemBuilder: (BuildContext context, int index) =&gt;
                        ProductCard(product: products[index]));
              },
              loading: () =&gt; CircularProgressIndicator(),
              error: (e, s) =&gt; Text(e)))
  </code></pre>
  <pre><code>final productServiceProvider = Provider&lt;ProductService&gt;((ref) {
    return ProductService();
  });
  
  class ProductService {
    ProductService();
  
    Future&lt;List&lt;ProductModel&gt;&gt; getAllProducts() async {
      await Future.delayed(Duration(seconds: 1));
  
      return [
        ProductModel(id: '1', title: 'product 1', isFavorite: false),
        ProductModel(id: '2', title: 'product 2', isFavorite: false),
        ProductModel(id: '3', title: 'product 3', isFavorite: false),
        ProductModel(id: '4', title: 'product 4', isFavorite: false)
      ];
    }
  }
  
  final productListStateProvider = StateProvider&lt;List&lt;ProductModel&gt;&gt;((ref) {
    return [];
  });
  
  final getProductsFutureProvider =
      FutureProvider.autoDispose&lt;List&lt;ProductModel&gt;&gt;((ref) async {
    ref.maintainState = true;
    final evtentService = ref.watch(productServiceProvider);
    final products = await evtentService.getAllProducts();
    ref.read(productListStateProvider).state = products;
  
    return products;
  });
  
  </code></pre>
  <pre><code>class ProductCard extends ConsumerWidget {
    final ProductModel product;
  
    const ProductCard({
      @required this.product,
      Key key,
    }) : super(key: key);
  
    @override
    Widget build(BuildContext context, ScopedReader watch) {
      return Card(
          child: Column(
        children: &lt;Widget&gt;[
          Text(product.title),
          product.isFavorite
              ? IconButton(
                  icon: Icon(Icons.favorite),
                  color: Colors.red,
                  onPressed: () {
                    product.isFavorite = !product.isFavorite;
                  },
                )
              : IconButton(
                  icon: Icon(Icons.favorite_border),
                  color: Colors.black54,
                  onPressed: () {
                    product.isFavorite = !product.isFavorite;
                  },
                )
        ],
      ));
    }
  }
  </code></pre>