Notes
UnconstrainedBox can seem a bit complex and we didn't go through it that much. I recommend reading the documentation here: UnconstrainedBox to get a clearer understanding of it if you didn't understand it. This article is also great to get a better understanding of it.
To get a better understanding of constraints in Flutter I recommend this article.
Immutability
Immutability is great for keeping state/objects predictable. We will go over immutability more in module 2 but if you want to learn more about it you can also check out my video about it
Overriding equals and hashcode
I personally use a VSCode extension called "Dart Data Class Generator" which allows me to generate the boilerplate code needed. Another great approach is to use the "Equatable" package. Personally, I try to go with the normal approach first and then opt to Equatable if I feel like I need it (it reduces the code needed but adds another dependency).