Files
CloudHome-Ops/lib/widgets/status_chip.dart

58 lines
1.5 KiB
Dart

import 'package:flutter/material.dart';
import '../models/device.dart';
import '../utils/i10n.dart';
/// 设备状态标签。
class StatusChip extends StatelessWidget {
const StatusChip({super.key, required this.status});
/// 设备状态。
final DeviceStatus status;
Color _color(BuildContext context) {
switch (status) {
case DeviceStatus.online:
return Colors.green;
case DeviceStatus.offline:
return Colors.grey;
case DeviceStatus.warning:
return Colors.orange;
}
}
@override
Widget build(BuildContext context) {
final color = _color(context);
final t = AppLocalizations.of(context);
final label = switch (status) {
DeviceStatus.online => t.statusOnline,
DeviceStatus.offline => t.statusOffline,
DeviceStatus.warning => t.statusWarning,
};
return Container(
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4),
decoration: BoxDecoration(
color: color.withOpacity(0.15),
borderRadius: BorderRadius.circular(999),
border: Border.all(color: color.withOpacity(0.6)),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Icon(Icons.circle, size: 8, color: color),
const SizedBox(width: 6),
Text(
label,
style: TextStyle(
color: color,
fontSize: 12,
fontWeight: FontWeight.w600,
),
),
],
),
);
}
}