57 lines
1.6 KiB
Dart
57 lines
1.6 KiB
Dart
class AiCard {
|
|
final String title;
|
|
final String subtitle;
|
|
final String? icon;
|
|
|
|
const AiCard({required this.title, required this.subtitle, this.icon});
|
|
|
|
factory AiCard.fromJson(Map<String, dynamic> json) => AiCard(
|
|
title: json['title'] as String? ?? '',
|
|
subtitle: json['subtitle'] as String? ?? '',
|
|
icon: json['icon'] as String?,
|
|
);
|
|
}
|
|
|
|
class AssistantNavigationAction {
|
|
final String sectionId;
|
|
final String sectionTitle;
|
|
final String sectionType;
|
|
|
|
const AssistantNavigationAction({
|
|
required this.sectionId,
|
|
required this.sectionTitle,
|
|
required this.sectionType,
|
|
});
|
|
|
|
factory AssistantNavigationAction.fromJson(Map<String, dynamic> json) =>
|
|
AssistantNavigationAction(
|
|
sectionId: json['sectionId'] as String? ?? '',
|
|
sectionTitle: json['sectionTitle'] as String? ?? '',
|
|
sectionType: json['sectionType'] as String? ?? '',
|
|
);
|
|
}
|
|
|
|
class AssistantResponse {
|
|
final String reply;
|
|
final List<AiCard>? cards;
|
|
final AssistantNavigationAction? navigation;
|
|
|
|
const AssistantResponse({
|
|
required this.reply,
|
|
this.cards,
|
|
this.navigation,
|
|
});
|
|
|
|
factory AssistantResponse.fromJson(Map<String, dynamic> json) =>
|
|
AssistantResponse(
|
|
reply: json['reply'] as String? ?? '',
|
|
cards: (json['cards'] as List<dynamic>?)
|
|
?.map((e) => AiCard.fromJson(e as Map<String, dynamic>))
|
|
.toList(),
|
|
navigation: json['navigation'] != null
|
|
? AssistantNavigationAction.fromJson(
|
|
json['navigation'] as Map<String, dynamic>)
|
|
: null,
|
|
);
|
|
}
|