planner library

Classes

Planner<T>
PlannerConfig<T>
PlannerController
A public handle a host constructs and hands to a Planner to drive and observe its zoom from outside the widget (#76) — for example a custom zoom toolbar that lives in the host's own chrome rather than the planner's on-canvas buttons.
PlannerEntry<T>
A single event drawn on the planner: its id, its time (day column / start / duration), display title/content, fill color and text styles, plus an optional typed data payload (#77) for carrying app domain metadata.
PlannerEntryLayout
The on-screen layout facts handed to a PlannerEntryBuilder for one event (#78). Everything here is derived from the package's geometry for the current frame, so the builder can lay out responsively without recomputing it.
PlannerTime
The position of an event on the planner grid: a day column index (into PlannerConfig.labels — there are no calendar dates here), a start hour and minutes, and a duration in minutes.

Enums

DragType
What a single in-progress events-canvas drag/resize is doing. A press within 8px of an event's top edge resizes from the top (topHandle), within 8px of the bottom resizes from the bottom (bottomHandle), anywhere else moves the whole event (body); none is the idle state (no drag in progress).
SpanOverlap
How a column-spanning event (one whose PlannerTime.endDay covers several columns, #47) coexists with the per-column overlap layout that splits concurrent single-column events into side-by-side sub-columns (#20 / D11).

Typedefs

PlannerDayHeaderBuilder = Widget Function(BuildContext context, int columnIndex, String label, bool isHighlighted)
Builds a fully custom widget for a single day/column header (#79). Supplied to the Planner as dayHeaderBuilder; when non-null the planner replaces the painted DateRow text with a row of host-built header widgets — one per column label — each sized to the column's blockWidth and the date row's height, and offset by the live horizontal scroll so the headers stay aligned with the day-columns below as the user pans (it rebuilds on the same triggerUpdate the row repaints on).
PlannerEntryBuilder<T> = Widget Function(BuildContext context, PlannerEntry<T> entry, PlannerEntryLayout layout)
Builds a fully custom widget for a single timed event (#78) — and, reused as allDayEntryBuilder, for a single all-day chip (#80). Supplied to the Planner as entryBuilder; when non-null the planner layers a widget overlay over the canvas and calls this for every (on-screen) event, sizing and positioning the returned widget at the event's current on-screen rect so it tracks scroll, zoom and drag in lockstep with the grid.