I’d still use what I suggested. Each heart is a seperate widget but rather than changing colours, you’d swap images instead; replacing full with empty ones.
Regarding communication. When you create a widget, ensure you store its reference - way you easily access it and call events / functions within, updating it.