calendar_planner_view 0.3.3 copy "calendar_planner_view: ^0.3.3" to clipboard
calendar_planner_view: ^0.3.3 copied to clipboard

A customizable daily calendar planner view with time-based events and Material 3 design.

Calendar Planner View #

A customizable daily calendar planner view with time-based events and Material 3 design

Live Demo

Live Demo #

Try the Interactive Demo!
Explore all features and customization options:

Open Live Demo

Screenshots #

View Toggle Demo Custom List Builder Demo
Dropdown All View Dropdown Meeting View
Dropdown Select View Select Date
Month View Week View
Select Date Multi Theme
Multi Column Month View Multi Column Week View

Features #

  • Time-based daily calendar view
  • Month and week view modes
  • Customizable event display
  • Custom list builder for complete event layout control
  • Material 3 design support
  • Customizable theme support
  • Customizable date picker
  • Dropdown styling customization
  • Sticky time labels
  • Event dot indicators
  • Multi-column layout support
  • Responsive design
  • Theme-aware styling
  • Event loading overlay

Installation #

Add this to your package's pubspec.yaml file:

dependencies:
  calendar_planner_view: any

Usage #

import 'package:calendar_planner_view/calendar_planner_view.dart';

// Basic usage
CalendarPlannerView(
  events: myEvents,
  onEventTap: (event) => print('Event tapped: $event'),
  datePickerPosition: DatePickerPosition.top,
  showCurrentTimeIndicator: true,
)

// Advanced usage with customization
CalendarPlannerView(
  events: myEvents,
  onEventTap: (event) => print('Event tapped: $event'),
  datePickerPosition: DatePickerPosition.modal,
  showCurrentTimeIndicator: true,
  startHour: 8,
  endHour: 20,
  showDayTitle: true,
  enableViewToggle: true,
  initialView: CalendarViewType.week,
  dotColor: Colors.blue,
  modalBackgroundColor: Colors.white,
  modalTitleStyle: TextStyle(
    color: Colors.black,
    fontWeight: FontWeight.bold,
  ),
)

// Toggle between list view (default) and timeline view modes
CalendarPlannerView(
  events: myEvents,
  selectedDate: DateTime.now(),
  datePickerPosition: DatePickerPosition.top,
  enableViewToggle: true,
  showListView: false, // Toggle to timeline view mode
  listBuilder: (context, events, selectedDate) {
    return CustomScrollView(
      slivers: [
        SliverToBoxAdapter(
          child: Padding(
            padding: EdgeInsets.all(16),
            child: Text(
              'Events for ${selectedDate.day}/${selectedDate.month}',
              style: Theme.of(context).textTheme.headlineSmall,
            ),
          ),
        ),
        SliverList(
          delegate: SliverChildBuilderDelegate(
            (context, index) {
              final event = events[index];
              return Card(
                child: ListTile(
                  title: Text(event.title),
                  subtitle: Text('${event.startTime.hour}:${event.startTime.minute.toString().padLeft(2, '0')}'),
                  leading: CircleAvatar(backgroundColor: event.color),
                  onTap: () => print('Custom event tap: ${event.title}'),
                ),
              );
            },
            childCount: events.length,
          ),
        ),
      ],
    );
  },
)

// Use default list view without custom builder (default behavior)
CalendarPlannerView(
  events: myEvents,
  // showListView: true is default, no need to specify
  datePickerPosition: DatePickerPosition.top,
  onEventTap: (event) => print('Event tapped: ${event.title}'),
)

// Use timeline view (opt-in)
CalendarPlannerView(
  events: myEvents,
  showListView: false, // Switch to traditional timeline view
  datePickerPosition: DatePickerPosition.top,
  startHour: 8,
  endHour: 18,
  onEventTap: (event) => print('Event tapped: ${event.title}'),
)

Live Demo #

Check out the live demo to see the calendar planner view in action.

Dependencies #

  • Flutter SDK
  • intl: ^0.20.2
  • table_calendar: ^3.2.0
  • flutter_hooks: ^0.21.2

Contributing #

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

License #

This project is licensed under the MIT License - see the LICENSE file for details

10
likes
160
points
296
downloads

Publisher

verified publisherdanials.space

Weekly Downloads

A customizable daily calendar planner view with time-based events and Material 3 design.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter, flutter_hooks, intl, table_calendar

More

Packages that depend on calendar_planner_view