@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.