code: func (f *Flex) Draw(screen tcell.Screen) {
  	f.Box.Draw(screen)
  
  	// Calculate size and position of the items.
  
  	// Do we use the entire screen?
  	if f.fullScreen {
  		width, height := screen.Size()
  		f.SetRect(0, 0, width, height)
  	}
  
  	// How much space can we distribute?
  	x, y, width, height := f.GetInnerRect()
  	var proportionSum int
  	distSize := width
  	if f.direction == FlexRow {
  		distSize = height
  	}
  	for _, item := range f.items {
  		if item.FixedSize > 0 {
  			distSize -= item.FixedSize
  		} else {
  			proportionSum += item.Proportion
  		}
  	}
  
  	// Calculate positions and draw items.
  	pos := x
  	if f.direction == FlexRow {
  		pos = y
  	}
  	for _, item := range f.items {
  		size := item.FixedSize
  		if size <= 0 {
  			size = distSize * item.Proportion / proportionSum
  			distSize -= size
  			proportionSum -= item.Proportion
  		}
  		if item.Item != nil {
  			if f.direction == FlexColumn {
  				item.Item.SetRect(pos, y, size, height)
  			} else {
  				item.Item.SetRect(x, pos, width, size)
  			}
  		}
  		pos += size
  
  		if item.Item != nil {
  			if item.Item.GetFocusable().HasFocus() {
  				defer item.Item.Draw(screen)
  			} else {
  				item.Item.Draw(screen)
  			}
  		}
  	}
  }
docs: // Draw draws this primitive onto the screen.