蓝牙绑定设备+场站切换支持高清图层的一对一显示+设备实时状态的部分显示

This commit is contained in:
2026-09-02 16:58:45 +08:00
parent 61bce2c1cf
commit 5141d6e83f
10 changed files with 458 additions and 133 deletions

View File

@@ -19,6 +19,9 @@ class DeviceItemWidget extends StatelessWidget {
return GestureDetector(
onTap: onTap,
child: Container(
// 🔥 卡片外边距:与 RobotItemCard 保持一致。
// 外层 ListView 只有 bottom padding,缺了这里卡片就会通栏贴边、左右圆角被裁掉。
margin: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 6.0),
padding: const EdgeInsets.all(16.0),
decoration: BoxDecoration(
color: context.appColors.cardBackground,
@@ -81,24 +84,32 @@ class DeviceItemWidget extends StatelessWidget {
IconData icon;
Color color;
// 🔥 同一个 type 字段有两套取值体系:英文 code(inverter)与中文名(逆变器)。
// 类型 tab 用英文 code 过滤,所以到达这里的设备大多是英文 code;
// 两套写法都认,否则全部落到 default 的通用设备图标。
switch (type) {
case '机器人':
case 'robot':
icon = Icons.smart_toy;
color = const Color(0xFF165DFF);
break;
case '逆变器':
case 'inverter':
icon = Icons.power;
color = const Color(0xFF165DFF);
break;
case '汇流箱':
case 'combiner_box':
icon = Icons.electrical_services;
color = const Color(0xFF722ED1);
break;
case '组件':
case 'module':
icon = Icons.solar_power;
color = const Color(0xFF13C2C2);
break;
case '监控':
case 'monitor':
icon = Icons.videocam;
color = const Color(0xFFEB2F96);
break;
@@ -153,7 +164,9 @@ class DeviceItemWidget extends StatelessWidget {
Widget _buildDeviceData(BuildContext context, DeviceEntity device) {
final dataItems = <Widget>[];
if (device.type == 'inverter') {
// 🔥 与 _buildDeviceIcon 同理:英文 code 与中文名都认,
// 否则匹配不上会落到 else 显示 "-- 数据"。
if (device.type == 'inverter' || device.type == '逆变器') {
dataItems.add(
_buildDataItem(
context,
@@ -169,7 +182,7 @@ class DeviceItemWidget extends StatelessWidget {
'${AppLocalizations.of(context).translate('device_list_v2.today_energy')}',
),
);
} else if (device.type == 'combiner_box') {
} else if (device.type == 'combiner_box' || device.type == '汇流箱') {
if (device.current != null) {
dataItems.add(
_buildDataItem(
@@ -189,7 +202,7 @@ class DeviceItemWidget extends StatelessWidget {
),
);
}
} else if (device.type == 'module') {
} else if (device.type == 'module' || device.type == '组件') {
dataItems.add(
_buildDataItem(
context,