add timeline pkg to flutter

This commit is contained in:
2026-02-24 19:26:17 +01:00
parent 0d1119b2af
commit 28898fb081
33 changed files with 2617 additions and 43 deletions

View File

@@ -0,0 +1,82 @@
class TimelineState {
final TimelineData timeline;
final String? selectedItemId;
TimelineState({required this.timeline, this.selectedItemId});
factory TimelineState.fromJson(Map<String, dynamic> json) {
return TimelineState(
timeline: TimelineData.fromJson(json['timeline'] as Map<String, dynamic>),
selectedItemId: json['selectedItemId'] as String?,
);
}
}
class TimelineData {
final String id;
final String title;
final List<TimelineGroupData> groups;
TimelineData({required this.id, required this.title, required this.groups});
factory TimelineData.fromJson(Map<String, dynamic> json) {
return TimelineData(
id: json['id'] as String,
title: json['title'] as String,
groups: (json['groups'] as List<dynamic>)
.map((g) => TimelineGroupData.fromJson(g as Map<String, dynamic>))
.toList(),
);
}
}
class TimelineGroupData {
final String id;
final String title;
final int sortOrder;
final List<TimelineItemData> items;
TimelineGroupData({
required this.id,
required this.title,
required this.sortOrder,
required this.items,
});
factory TimelineGroupData.fromJson(Map<String, dynamic> json) {
return TimelineGroupData(
id: json['id'] as String,
title: json['title'] as String,
sortOrder: json['sortOrder'] as int,
items: (json['items'] as List<dynamic>)
.map((i) => TimelineItemData.fromJson(i as Map<String, dynamic>))
.toList(),
);
}
}
class TimelineItemData {
final String id;
final String title;
final String? description;
final String start;
final String? end;
TimelineItemData({
required this.id,
required this.title,
this.description,
required this.start,
this.end,
});
factory TimelineItemData.fromJson(Map<String, dynamic> json) {
return TimelineItemData(
id: json['id'] as String,
title: json['title'] as String,
description: json['description'] as String?,
start: json['start'] as String,
end: json['end'] as String?,
);
}
}