We must specify the type of the model that we want to access.
In this case, we want CartModel, so we write
Consumer<CartModel>. If you don’t specify the generic (<CartModel>),
the provider package won’t be able to help you. provider is based on types,
and without the type, it doesn’t know what you want.

The only required argument of the Consumer widget
is the builder. Builder is a function that is called whenever the
ChangeNotifier changes. (In other words, when you call notifyListeners()
in your model, all the builder methods of all the corresponding
Consumer widgets are called.)

The builder is called with three arguments. The first one is context,
which you also get in every build method.

The second argument of the builder function is the instance of
the ChangeNotifier. It’s what we were asking for in the first place.
You can use the data in the model to define what the UI should look like
at any given point.