Browse Source

上传天气预报

weicu
liwei1dao 1 year ago
parent
commit
1f1ad28a5d
  1. 2
      lib/modules/agent/controllers/agent_controller.dart
  2. 59
      lib/modules/agent/views/message_bubble.dart

2
lib/modules/agent/controllers/agent_controller.dart

@ -108,7 +108,7 @@ class AgentController extends GetxController {
if (result.messages.isNotEmpty) { if (result.messages.isNotEmpty) {
// 转换并添加消息到列表 // 转换并添加消息到列表
final historyMessages = result.messages.map((msg) { final historyMessages = result.messages.map((msg) {
final meta = msg.metadata != null final meta = msg.metadata != null && msg.metadata != ""
? jsonDecode(msg.metadata!) ? jsonDecode(msg.metadata!)
: null; // 如果为空,使用空对象 : null; // 如果为空,使用空对象
return Message( return Message(

59
lib/modules/agent/views/message_bubble.dart

@ -1,3 +1,4 @@
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
@ -211,8 +212,19 @@ class MessageBubble extends GetView<AgentController> {
//音乐播放列表 //音乐播放列表
return _buildMusicContent(context, playlist); return _buildMusicContent(context, playlist);
} else if (mate!.keys.contains('card_weather')) { } else if (mate!.keys.contains('card_weather')) {
final city = mate!['card_weather']['city'] as String;
final rawList = mate!['card_weather']['dayweather'] as List;
final daylist =
rawList.map((e) => Map<String, dynamic>.from(e)).toList();
final now = daylist[0];
//天气 //天气
return _buildWeatherContent(context); return _buildWeatherContent(
context,
city,
now,
daylist,
);
} }
// if (message.contains('播放列表') || message.contains('音乐')) { // if (message.contains('播放列表') || message.contains('音乐')) {
@ -659,7 +671,8 @@ class MessageBubble extends GetView<AgentController> {
} }
/// 构建天气内容卡片 /// 构建天气内容卡片
Widget _buildWeatherContent(BuildContext context) { Widget _buildWeatherContent(BuildContext context, String city,
Map<String, dynamic> now, List<Map<String, dynamic>> days) {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -701,7 +714,7 @@ class MessageBubble extends GetView<AgentController> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'北京', city,
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@ -710,7 +723,7 @@ class MessageBubble extends GetView<AgentController> {
), ),
SizedBox(height: 4), SizedBox(height: 4),
Text( Text(
'晴朗', now["weatherCondition"],
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
color: Colors.white.withOpacity(0.9), color: Colors.white.withOpacity(0.9),
@ -720,7 +733,7 @@ class MessageBubble extends GetView<AgentController> {
Row( Row(
children: [ children: [
Text( Text(
'25°', "${now["temperature"]}°",
style: TextStyle( style: TextStyle(
fontSize: 36, fontSize: 36,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
@ -732,14 +745,14 @@ class MessageBubble extends GetView<AgentController> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'最高: 29°', '最高: ${now["maxTemperature"]}°',
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
color: Colors.white.withOpacity(0.9), color: Colors.white.withOpacity(0.9),
), ),
), ),
Text( Text(
'最低: 18°', '最低: ${now["minTemperature"]}°',
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
color: Colors.white.withOpacity(0.9), color: Colors.white.withOpacity(0.9),
@ -773,15 +786,31 @@ class MessageBubble extends GetView<AgentController> {
), ),
), ),
SizedBox(height: 8), SizedBox(height: 8),
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// _buildForecastDay('周一', Icons.wb_sunny, '28°'),
// _buildForecastDay('周二', Icons.cloud, '25°'),
// _buildForecastDay('周三', Icons.wb_cloudy, '26°'),
// _buildForecastDay('周四', Icons.grain, '24°'),
// _buildForecastDay('周五', Icons.wb_sunny, '27°'),
// ],
// ),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: List.generate(
_buildForecastDay('周一', Icons.wb_sunny, '28°'), days.length,
_buildForecastDay('周二', Icons.cloud, '25°'), (index) {
_buildForecastDay('周三', Icons.wb_cloudy, '26°'), String dateStr = days[index]['date'];
_buildForecastDay('周四', Icons.grain, '24°'), DateTime? date = DateUtil.getDateTime(dateStr);
_buildForecastDay('周五', Icons.wb_sunny, '27°'), String weekday = DateUtil.getWeekday(date);
], return _buildForecastDay(
weekday,
Icons.wb_sunny,
days[index]['temperature'],
);
},
),
), ),
SizedBox(height: 16), SizedBox(height: 16),
Container( Container(
@ -790,7 +819,7 @@ class MessageBubble extends GetView<AgentController> {
color: Colors.white.withOpacity(0.2), color: Colors.white.withOpacity(0.2),
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
child: Row( child: const Row(
children: [ children: [
Icon( Icon(
Icons.info_outline, Icons.info_outline,

Loading…
Cancel
Save