● Flutter package · v1.0.0

Every calendar your app needs. One package.

Month, week, year, schedule and planner views, single, multiple and range pickers, typed date input, time zones, recurrence and 80+ date functions. Zero dependencies and fully themeable.

$ flutter pub add chronoverse
Planner with drag and drop cards
Month calendar with events
0dependencies
80+date functions
14languages built in
6calendar systems
6platforms
Features

Built for every kind of product

Booking, scheduling, planning, fitness, finance, education or healthcare. Pick the view, theme it, ship it.

Swipeable month & week

Expandable week ↔ month, controlled from code. Quick year and month jumps from the header.

Single, multi & range

Range presets, maximum length, blocked days, freeze, read-only and disabled states.

Planner & drag and drop

Multicolour event cards in five shapes. Drag notes or events onto any day.

Schedule view

Day to week time grid with drag to move, edge resize, work hours, blocked slots and a now line.

Type or pick

Masked input with validation and natural language like “next friday” or “in 3 days”.

Chrono toolbox

Business days, ages, ISO weeks, leap years, formatting, parsing, relative time and more.

Time zones

Daylight-saving aware zones with correct handling of skipped and repeated hours.

Rich events

Recurrence, exceptions, attendees, reminders, status, visibility and calendar file import/export.

Theme everything

Colours, shapes, sizes, text and motion. Light and dark follow your app automatically.

Showcase

See it in action

Every screen below ships in the example gallery.

Developer first

Three lines to start. Every option when you need it.

Sensible defaults everywhere, builders that return null to keep the default, and a controller you can drive from anywhere in your app.

  • No setup, no delegates, no initialization
  • Month arithmetic that never overflows
  • Leap-year and daylight-saving safe
  • Right-to-left, large text and keyboard ready
  • Works on mobile, web and desktop
final controller = ChronoCalendarController();

ChronoCalendar(
  controller: controller,
  mode: ChronoSelectionMode.range,
  expandable: true,
  events: myEvents,
  availability: DateAvailability(disablePast: true),
  onRangeSelected: (range) => print(range),
);

controller.showWeekOf(DateTime(2026, 12, 21)); // collapse
controller.freeze();                          // lock

Chrono.addMonths(DateTime(2025, 1, 31), 1);   // Feb 28
Chrono.addBusinessDays(DateTime.now(), 10);
Chrono.parseNatural('next friday');
Chrono.timeAgo(date, locale: 'es');       // hace 3 días
Documentation

Everything you need to integrate

Step-by-step guides for macOS and Windows, a full API reference and a working example app.

Add Chronoverse to your app today

One package for every date, every view and every picker.