Adam,
Thank you for your response.
In summary:
1. "Composition" is the preferred term of "encapsulation."
2. The heuristic is "composition unless there is a strong reason to inherit."
FWIW, I don't find composition only to be more flexible, as you say,
but I find the resulting code so much easier to read and modify. Much
more developer friendly. The whole experience of programming with
Flutter reminds me of a lot of the really enjoyable things about
programming with QML, obscure though QML may be.
Cheers, Rick