add timeline pkg to flutter
This commit is contained in:
82
packages/z-timeline/lib/state.dart
Normal file
82
packages/z-timeline/lib/state.dart
Normal 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?,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user