render method
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);
}
}