In general you should try to make things modular. If you need to copy/paste code around then there is probably a way to abstract it and generalize it.
Personally I would build things one screen at a time and as you notice commonalities between them abstract the code and put it in its own widget. For example, we have some fun things we are doing with buttons so we have a custom button widget that add functionality to the button rather than having to remake the button all the time.
In reality you can do this just about any way you want and it will work but I generally ask myself “How can I code this to make it easier to support?”. For me that is the key. Our designers need flexibility and going back to them and telling them it’s going to take weeks to make what seems like a simple change is bad. I don’t like having to do that because that generally means I made a mistake when designing the system.
These concepts go for all code really but I found it was very important on UIs.