{ return Consumer<CartState>( builder: (context, cart, child) => Stack( children: [ // Use SomeExpensiveWidget here, without rebuilding every time. if (child != null) child, Text("Total price: ${cart.totalPrice}"), ], // Build the expensive widget here. child: SomeExpensiveWidget(), ), ); } } Provider.of<CartModel>(context, listen: false)!.add(Item(name: 'Phone')); Provider.of<CartModel>(context, listen: false)!.removeAll(); ChangeNotifier Example Vs Provider Example