paint method

  1. @override
void paint(
  1. PaintingContext context,
  2. Offset offset
)
override

Paints this render object into the given context at offset.

Implementation

@override
void paint(PaintingContext context, Offset offset) {
  _ensureStylesCached();
  final int x = offset.x;
  final int y = offset.y;
  final int w = size!.width;
  final TextStyle selectedBg = _cachedSelectedBg!;
  final TextStyle normalBg = _cachedNormalBg!;
  final TextStyle selectedEnabled = _cachedSelectedEnabledFg!;
  final TextStyle selectedDisabled = _cachedSelectedDisabledFg!;
  final TextStyle normalEnabled = _cachedNormalEnabledFg!;
  final TextStyle normalDisabled = _cachedNormalDisabledFg!;
  final int itemsLength = _items.length;
  for (int i = 0; i < itemsLength; i++) {
    final DropdownMenuItem<T> item = _items[i];
    final bool isSelected = i == _selectedIndex;
    final TextStyle bgStyle = isSelected ? selectedBg : normalBg;
    final TextStyle fgBgStyle = isSelected
        ? (item.enabled ? selectedEnabled : selectedDisabled)
        : (item.enabled ? normalEnabled : normalDisabled);
    context.fillBackground(x, y + i, w, bgStyle);
    final String prefix = isSelected ? '> ' : '  ';
    context.writeString(x, y + i, prefix, fgBgStyle);
    context.writeString(x + 2, y + i, item.label, fgBgStyle);
  }
}