Composition vs inheritance: Flutter widget hierarchy example