cache the required size and heights, they are constant always unless we add or remove a child widget