148 lines
4.2 KiB
Dart
148 lines
4.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
class WorkParamsCard extends StatelessWidget {
|
|
const WorkParamsCard({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Container(
|
|
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
|
|
padding: const EdgeInsets.all(20),
|
|
decoration: BoxDecoration(
|
|
color: Colors.white,
|
|
borderRadius: BorderRadius.circular(24),
|
|
// 极淡的阴影
|
|
boxShadow: [
|
|
BoxShadow(
|
|
color: Colors.black.withOpacity(0.02),
|
|
blurRadius: 10,
|
|
offset: const Offset(0, 4),
|
|
),
|
|
],
|
|
),
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
// 标题行
|
|
Row(
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
children: [
|
|
Row(
|
|
children: [
|
|
// 左侧蓝色装饰条
|
|
Container(
|
|
width: 4,
|
|
height: 16,
|
|
decoration: BoxDecoration(
|
|
color: Colors.blueAccent,
|
|
borderRadius: BorderRadius.circular(2),
|
|
),
|
|
),
|
|
const SizedBox(width: 8),
|
|
const Text(
|
|
'作业参数',
|
|
style: TextStyle(
|
|
fontSize: 16,
|
|
fontWeight: FontWeight.bold,
|
|
color: Colors.black,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
// 刷新状态
|
|
Row(
|
|
children: [
|
|
Icon(Icons.refresh, size: 14, color: Colors.grey[400]),
|
|
const SizedBox(width: 4),
|
|
Text(
|
|
'刚刚更新',
|
|
style: TextStyle(fontSize: 12, color: Colors.grey[400]),
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
const SizedBox(height: 24),
|
|
|
|
// 数据展示行
|
|
IntrinsicHeight(
|
|
// 关键:使分割线高度自动充满
|
|
child: Row(
|
|
children: [
|
|
_buildParamItem('作业面积', '0', '亩'),
|
|
_buildDivider(),
|
|
_buildParamItem('作业里程', '0', 'km'),
|
|
_buildDivider(),
|
|
_buildParamItem('作业时长', '0', 'h'),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
// 构建单个参数项
|
|
Widget _buildParamItem(String label, String value, String unit) {
|
|
return Expanded(
|
|
child: Column(
|
|
children: [
|
|
Row(
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: [
|
|
Icon(
|
|
label == '作业面积'
|
|
? Icons.aspect_ratio
|
|
: label == '作业里程'
|
|
? Icons.local_shipping_outlined
|
|
: Icons.access_time,
|
|
size: 14,
|
|
color: Colors.black38,
|
|
),
|
|
const SizedBox(width: 4),
|
|
Text(
|
|
label,
|
|
style: const TextStyle(fontSize: 12, color: Colors.black38),
|
|
),
|
|
],
|
|
),
|
|
const SizedBox(height: 12),
|
|
RichText(
|
|
text: TextSpan(
|
|
children: [
|
|
TextSpan(
|
|
text: value,
|
|
style: const TextStyle(
|
|
fontSize: 28,
|
|
fontWeight: FontWeight.w700,
|
|
color: Colors.black,
|
|
fontFamily: 'Inter', // 建议使用数字显示更漂亮的字体
|
|
),
|
|
),
|
|
TextSpan(
|
|
text: ' $unit',
|
|
style: const TextStyle(
|
|
fontSize: 12,
|
|
fontWeight: FontWeight.normal,
|
|
color: Colors.black54,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
// 垂直分割线
|
|
Widget _buildDivider() {
|
|
return VerticalDivider(
|
|
color: Colors.black.withOpacity(0.05),
|
|
thickness: 1,
|
|
indent: 10,
|
|
endIndent: 10,
|
|
);
|
|
}
|
|
}
|