render method

  1. @override
void render(
  1. Rect area,
  2. Buffer buffer,
  3. RenderContext ctx
)
override

Implementation

@override
void render(Rect area, Buffer buffer, RenderContext ctx) {
  if (area.isEmpty) return;
  final focused = ctx.isFocused(id);

  final base = fieldStyle ?? ctx.theme.text.body;
  final active = activeFieldStyle ??
      Style(
        fg: ctx.theme.colors.background,
        bg: focused ? ctx.theme.colors.primary : ctx.theme.colors.foreground,
        bold: true,
      );
  final sep = separatorStyle ?? Style(fg: ctx.theme.colors.muted);

  String hourText;
  if (use24Hour) {
    hourText = _pad(state.hour);
  } else {
    final h12 = state.hour % 12 == 0 ? 12 : state.hour % 12;
    hourText = _pad(h12);
  }

  var x = area.x;
  void write(String s, Style style) {
    if (x + s.length > area.right) return;
    buffer.writeText(x, area.y, s, style: style, maxWidth: area.right - x);
    x += s.length;
  }

  write(hourText, state.active == TimeField.hour && focused ? active : base);
  write(':', sep);
  write(_pad(state.minute),
      state.active == TimeField.minute && focused ? active : base);
  if (showSeconds) {
    write(':', sep);
    write(_pad(state.second),
        state.active == TimeField.second && focused ? active : base);
  }
  if (!use24Hour) {
    write(' ', sep);
    write(state.hour < 12 ? 'AM' : 'PM',
        state.active == TimeField.ampm && focused ? active : base);
  }
}