A production-ready, fully customizable Gantt chart widget for Flutter applications.
- 💓 Scrollable timeline view
- ↔ Draggable
- 🎈 Complete visual customization
- 🛳 Hierarchical activities with parent/child relationships
- 🙳 Activity segments with custom styling
- 👅 Built-in date utilities and calculations
- 🚀 Optimized for performance
- 😱 Responsive across all platforms
Add to your pubspec.yaml
:
yaml dependencies: flutter_gantt: <latest-version>
Then run:
bash flutter pub get
import 'package:flutter_gantt/flutter_gantt.dart';
Gantt(
theme: GanttTheme.of(context),
activitiesAsync: (startDate, endDate, activity) async => _activities,
holidaysAsync: (startDate, endDate, holidays) async _holidays,
onActivityChanged: (activity, start, end) {
if (start != null && end != null) {
debugPrint('$activity was moved (Event on widget)');
} else if (start != null) {
debugPrint(
'$activity start was moved (Event on widget)',
);
} else if (end != null) {
debugPrint('$activity end was moved (Event on widget)');
}
},
),
The main chart container with these key properties:
Property | Type | Description |
---|---|---|
startDate |
DateTime | Initial visible date |
activities |
List | Activities to display |
holidays |
List | Special dates to highlight |
theme |
GanttTheme | Visual customization |
controller |
GanttController | Programmatic control |
Represents a task with:
GanttActivity(
start: DateTime.now(),
end: DateTime.now().add(Duration(days: 5)),
title: 'Task Name',
color: Colors.blue,
// Optional:
children: [/* sub-tasks */],
segments: [/* phases */],
onCellTap: (activity) => print('Tapped ${activity.title}'),
)
[Programmatic Control:]
final controller = GanttController(
startDate: DateTime.now(),
daysViews: 30,
);
// Navigate timeline
controller.next(days: 7); // Move forward
controller.prev(days: 14); // Move backward
// Update data
controller.setActivities(newActivities);
[Custom Builders:]
GanttActivity(
cellBuilder: (date) => YourCustomWidget(date),
titleWidget: YourTitleWidget(),
)
Explore complete examples in the example folder.
We welcome contributions!
MIT – See LICENSE for details.
- Added limitations when dragging
- Improving documentation
- Implementing cell segments
- Improving mobile usability