|
|
|
@ -233,29 +233,33 @@ class MessageBubble extends GetView<AgentController> { |
|
|
|
// 判断消息类型,显示不同的卡片 |
|
|
|
if (meta!.keys.contains('music_play')) { |
|
|
|
final card_music = |
|
|
|
meta!["music_play"]['card_music'] as Map<String, dynamic>; |
|
|
|
final musicId = card_music!['id']; |
|
|
|
final musicName = card_music!['name'] as String; |
|
|
|
final musicUrl = card_music!['url'] as String; |
|
|
|
final musicSinger = card_music!['sgener'] as String; |
|
|
|
final musicImage = card_music!['image'] as String; |
|
|
|
//音乐卡片 |
|
|
|
return buildMusicItem( |
|
|
|
context, musicId, musicName, musicUrl, musicSinger, musicImage); |
|
|
|
meta!["music_play"]['card_music'] as Map<String, dynamic>?; |
|
|
|
if (card_music != null) { |
|
|
|
final musicId = card_music['id']; |
|
|
|
final musicName = card_music['name'] as String? ?? '未知歌曲'; |
|
|
|
final musicUrl = card_music['url'] as String? ?? ''; |
|
|
|
final musicSinger = card_music['sgener'] as String? ?? '未知歌手'; |
|
|
|
final musicImage = card_music['image'] as String? ?? ''; |
|
|
|
//音乐卡片 |
|
|
|
return buildMusicItem( |
|
|
|
context, musicId, musicName, musicUrl, musicSinger, musicImage); |
|
|
|
} |
|
|
|
} else if (meta!.keys.contains('music_playlist')) { |
|
|
|
final card_musiclist = |
|
|
|
meta!["music_playlist"]['card_musiclist'] as Map<String, dynamic>; |
|
|
|
final rawList = card_musiclist['musics'] as List; |
|
|
|
final playlist = |
|
|
|
rawList.map((e) => Map<String, dynamic>.from(e)).toList(); |
|
|
|
//音乐播放列表 |
|
|
|
return buildMusicContent(context, playlist); |
|
|
|
meta!["music_playlist"]['card_musiclist'] as Map<String, dynamic>?; |
|
|
|
if (card_musiclist != null) { |
|
|
|
final rawList = card_musiclist['musics'] as List? ?? []; |
|
|
|
final playlist = |
|
|
|
rawList.map((e) => Map<String, dynamic>.from(e)).toList(); |
|
|
|
//音乐播放列表 |
|
|
|
return buildMusicContent(context, playlist); |
|
|
|
} |
|
|
|
} else if (meta!.keys.contains('maps_weather')) { |
|
|
|
final city = meta!['maps_weather']['city'] as String; |
|
|
|
final rawList = meta!['maps_weather']['forecasts'] as List; |
|
|
|
final city = meta!['maps_weather']['city'] as String? ?? '未知城市'; |
|
|
|
final rawList = meta!['maps_weather']['forecasts'] as List? ?? []; |
|
|
|
final daylist = |
|
|
|
rawList.map((e) => Map<String, dynamic>.from(e)).toList(); |
|
|
|
final now = daylist[0] as Map<String, dynamic>; |
|
|
|
final now = daylist.isNotEmpty ? daylist[0] : <String, dynamic>{}; |
|
|
|
//天气 |
|
|
|
return buildWeatherContent( |
|
|
|
context, |
|
|
|
@ -264,30 +268,32 @@ class MessageBubble extends GetView<AgentController> { |
|
|
|
daylist, |
|
|
|
); |
|
|
|
} else if (meta!.keys.contains('card_travel')) { |
|
|
|
final rawList = meta!['card_travel']['items'] as List; |
|
|
|
final rawList = meta!['card_travel']['items'] as List? ?? []; |
|
|
|
final travellist = |
|
|
|
rawList.map((e) => Map<String, dynamic>.from(e)).toList(); |
|
|
|
// 旅游 |
|
|
|
return buildTravelContent(context, travellist); |
|
|
|
} else if (meta!.keys.contains('maps_route_navigation')) { |
|
|
|
final card_navigation = meta!['maps_route_navigation'] |
|
|
|
['card_navigation'] as Map<String, dynamic>; |
|
|
|
final start = card_navigation['start'] as String; |
|
|
|
final end = card_navigation['end'] as String; |
|
|
|
final destination = card_navigation['destination'] as String; |
|
|
|
final rawList = card_navigation['items'] as List; |
|
|
|
final list = rawList.map((e) => Map<String, dynamic>.from(e)).toList(); |
|
|
|
final rawNavigation = card_navigation['navigation']; |
|
|
|
final Map<String, dynamic>? navigation = |
|
|
|
rawNavigation is Map<String, dynamic> ? rawNavigation : null; |
|
|
|
print("导航实时数据 ${rawNavigation}"); |
|
|
|
// 导航 |
|
|
|
return navigationCard(context, |
|
|
|
start: start, |
|
|
|
end: end, |
|
|
|
destination: destination, |
|
|
|
modes: list, |
|
|
|
navigation: navigation); |
|
|
|
['card_navigation'] as Map<String, dynamic>?; |
|
|
|
if (card_navigation != null) { |
|
|
|
final start = card_navigation['start'] as String? ?? ''; |
|
|
|
final end = card_navigation['end'] as String? ?? ''; |
|
|
|
final destination = card_navigation['destination'] as String? ?? ''; |
|
|
|
final rawList = card_navigation['items'] as List? ?? []; |
|
|
|
final list = rawList.map((e) => Map<String, dynamic>.from(e)).toList(); |
|
|
|
final rawNavigation = card_navigation['navigation']; |
|
|
|
final Map<String, dynamic>? navigation = |
|
|
|
rawNavigation is Map<String, dynamic> ? rawNavigation : null; |
|
|
|
print("导航实时数据 ${rawNavigation}"); |
|
|
|
// 导航 |
|
|
|
return navigationCard(context, |
|
|
|
start: start, |
|
|
|
end: end, |
|
|
|
destination: destination, |
|
|
|
modes: list, |
|
|
|
navigation: navigation); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// if (message.contains('播放列表') || message.contains('音乐')) { |
|
|
|
|