@JonB Thank you! It always good to know some good practice. It is something I miss a bit... If you have any recommendation where I could find more tips like this, let me know!
Go with the usual: single responsibility. If a widget shall handle a particular aspect then keep it separated with a clean API so can also make it testable.
For the models, it will highly depend on what you want to access and how you need to interact with it.
Thank you very much for your answers, because they have been very useful to solve a problem within my application.