车辆管理应用
欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
一、项目概述
运行效果图




1.1 应用简介
车辆管理是一款专注于个人车辆信息维护与费用追踪的移动应用,为车主提供便捷、全面的车辆管理体验。随着私家车保有量的持续增长,车辆日常维护与费用管理已成为车主的刚需。本应用帮助用户实现多车辆集中管理,支持保养记录追踪、加油消费统计、费用分析等功能,让车辆管理更加系统化、数据化。
应用支持多车辆信息管理,每辆车可独立记录品牌、型号、车牌、里程等信息。保养记录功能帮助用户追踪每次保养详情,并智能提醒下次保养时间。加油记录功能详细记录每次加油信息,便于油耗分析。费用统计模块提供多维度费用分析,让用车成本一目了然。
1.2 核心功能
| 功能模块 | 功能描述 | 实现方式 |
|---|---|---|
| 车辆管理 | 添加、编辑、删除车辆信息 | ListView + Card |
| 车辆详情 | 查看车辆完整信息与记录 | ModalBottomSheet |
| 保养记录 | 记录保养详情与下次提醒 | ListView + Card |
| 加油记录 | 记录加油量、单价、总价 | ListView + Card |
| 费用统计 | 多维度费用分析展示 | 图表 + 进度条 |
| 保养提醒 | 智能计算保养到期时间 | 日期差值计算 |
1.3 车辆属性
| 属性 | 类型 | 说明 |
|---|---|---|
| 车辆ID | String | 唯一标识 |
| 品牌 | String | 车辆品牌 |
| 型号 | String | 车辆型号 |
| 车牌号 | String | 车牌号码 |
| 年份 | int | 购买年份 |
| 燃料类型 | FuelType | 汽油/柴油/电动/混动 |
| 当前里程 | int | 车辆行驶里程 |
| 购买日期 | DateTime | 购车日期 |
| 购买价格 | double | 购车价格 |
1.4 燃料类型
| 类型 | 图标 | 颜色 | 说明 |
|---|---|---|---|
| 汽油 | local_gas_station | 红色 | 传统燃油车 |
| 柴油 | local_gas_station | 棕色 | 柴油动力车 |
| 电动 | electric_car | 绿色 | 纯电动汽车 |
| 混动 | electric_car | 蓝色 | 油电混合动力 |
1.5 保养类型
| 类型 | 图标 | 说明 |
|---|---|---|
| 机油更换 | oil_barrel | 发动机机油更换 |
| 轮胎换位 | tire_repair | 轮胎位置调换 |
| 刹车检查 | disc_full | 制动系统检查 |
| 空气滤芯 | air | 空气滤清器更换 |
| 冷却液 | water_drop | 冷却液更换 |
| 变速箱 | settings | 变速箱油更换 |
| 电瓶检查 | battery_charging_full | 蓄电池检测 |
| 年检 | verified | 车辆年检 |
1.6 技术栈
| 技术领域 | 技术选型 | 版本要求 |
|---|---|---|
| 开发框架 | Flutter | >= 3.0.0 |
| 编程语言 | Dart | >= 2.17.0 |
| 设计规范 | Material Design 3 | - |
| 状态管理 | setState | - |
| 日期处理 | intl | ^0.19.0 |
| 目标平台 | 鸿蒙OS | API 21+ |
1.7 项目结构
lib/
└── main_vehicle.dart
├── VehicleManagementApp # 应用入口
├── FuelType # 燃料类型枚举
├── MaintenanceType # 保养类型枚举
├── Vehicle # 车辆数据模型
├── MaintenanceRecord # 保养记录模型
├── FuelRecord # 加油记录模型
├── ExpenseRecord # 费用记录模型
└── VehicleHomePage # 主页面
├── _buildVehicleListPage() # 车辆列表页
├── _buildMaintenancePage() # 保养记录页
├── _buildFuelPage() # 加油记录页
├── _buildStatisticsPage() # 费用统计页
├── _buildVehicleCard() # 车辆卡片
├── _buildMaintenanceCard() # 保养卡片
├── _buildFuelCard() # 加油卡片
└── _showVehicleDetail() # 车辆详情弹窗
二、系统架构
2.1 整体架构图
Business Logic
Presentation Layer
Data Layer
Vehicle
车辆模型
MaintenanceRecord
保养记录
FuelRecord
加油记录
ExpenseRecord
费用记录
FuelType
燃料类型
MaintenanceType
保养类型
主页面
车辆列表Tab
保养记录Tab
加油记录Tab
费用统计Tab
车辆详情弹窗
基本信息
保养历史
加油历史
车辆管理
增删改查
保养记录
添加/提醒
加油记录
添加/统计
费用分析
多维度统计
2.2 类图设计
contains
manages
manages
manages
manages
has
has
VehicleManagementApp
+Widget build()
<<enumeration>>
FuelType
gasoline
diesel
electric
hybrid
+String label
+IconData icon
+Color color
<<enumeration>>
MaintenanceType
oilChange
tireRotation
brakeCheck
airFilter
coolant
transmission
battery
inspection
+String label
+IconData icon
Vehicle
+String id
+String brand
+String model
+String plateNumber
+int year
+FuelType fuelType
+int currentMileage
+DateTime purchaseDate
+double purchasePrice
+String fullName
MaintenanceRecord
+String id
+String vehicleId
+MaintenanceType type
+DateTime date
+int mileage
+double cost
+String shop
+String notes
+DateTime nextDueDate
+int nextDueMileage
FuelRecord
+String id
+String vehicleId
+DateTime date
+int mileage
+double liters
+double pricePerLiter
+double totalCost
+bool isFullTank
+String station
+double efficiency
ExpenseRecord
+String id
+String vehicleId
+String category
+double amount
+DateTime date
+String description
VehicleHomePage
-List<Vehicle> _vehicles
-List<MaintenanceRecord> _maintenanceRecords
-List<FuelRecord> _fuelRecords
-List<ExpenseRecord> _expenseRecords
-int _selectedIndex
+Widget build()
-void _showAddVehicleDialog()
-void _deleteVehicle()
-void _showAddMaintenanceDialog()
-void _showAddFuelDialog()
2.3 数据流程图
管理车辆
添加保养
添加加油
查看统计
用户操作
操作类型
车辆增删改
创建保养记录
创建加油记录
计算费用汇总
更新车辆列表
更新保养列表
更新加油列表
更新统计图表
刷新界面
2.4 保养提醒流程
提醒计算 保养记录 保养页面 用户 提醒计算 保养记录 保养页面 用户 查看保养列表 获取所有记录 计算到期天数 nextDueDate - today 返回提醒状态 显示逾期/临近/正常状态
三、核心模块设计
3.1 数据模型设计
3.1.1 燃料类型枚举 (FuelType)
dart
enum FuelType {
gasoline('汽油', Icons.local_gas_station, Colors.red),
diesel('柴油', Icons.local_gas_station, Colors.brown),
electric('电动', Icons.electric_car, Colors.green),
hybrid('混动', Icons.electric_car, Colors.blue);
final String label;
final IconData icon;
final Color color;
const FuelType(this.label, this.icon, this.color);
}
3.1.2 保养类型枚举 (MaintenanceType)
dart
enum MaintenanceType {
oilChange('机油更换', Icons.oil_barrel),
tireRotation('轮胎换位', Icons.tire_repair),
brakeCheck('刹车检查', Icons.disc_full),
airFilter('空气滤芯', Icons.air),
coolant('冷却液', Icons.water_drop),
transmission('变速箱', Icons.settings),
battery('电瓶检查', Icons.battery_charging_full),
inspection('年检', Icons.verified);
final String label;
final IconData icon;
const MaintenanceType(this.label, this.icon);
}
3.1.3 车辆模型 (Vehicle)
dart
class Vehicle {
final String id; // 唯一标识
final String brand; // 品牌
final String model; // 型号
final String plateNumber; // 车牌号
final int year; // 年份
final FuelType fuelType; // 燃料类型
final int currentMileage; // 当前里程
final DateTime purchaseDate; // 购买日期
final double purchasePrice; // 购买价格
final String? imageUrl; // 图片URL
final DateTime createdAt; // 创建时间
String get fullName => '$brand $model';
}
3.1.4 保养记录模型 (MaintenanceRecord)
dart
class MaintenanceRecord {
final String id; // 记录ID
final String vehicleId; // 车辆ID
final MaintenanceType type; // 保养类型
final DateTime date; // 保养日期
final int mileage; // 保养时里程
final double cost; // 费用
final String? shop; // 维修店
final String? notes; // 备注
final DateTime nextDueDate; // 下次保养日期
final int? nextDueMileage; // 下次保养里程
}
3.1.5 加油记录模型 (FuelRecord)
dart
class FuelRecord {
final String id; // 记录ID
final String vehicleId; // 车辆ID
final DateTime date; // 加油日期
final int mileage; // 加油时里程
final double liters; // 加油量(升)
final double pricePerLiter; // 单价(元/升)
final double totalCost; // 总费用
final bool isFullTank; // 是否满箱
final String? station; // 加油站
double get efficiency => liters > 0 ? mileage / liters : 0;
}
3.2 保养提醒逻辑
3.2.1 提醒状态计算
是
否
是
否
获取保养记录
计算到期天数
daysUntilDue < 0?
已逾期状态
daysUntilDue < 30?
临近提醒状态
正常状态
红色标识
橙色标识
绿色标识
3.2.2 提醒状态实现
dart
Widget _buildMaintenanceCard(MaintenanceRecord record) {
final daysUntilDue = record.nextDueDate.difference(DateTime.now()).inDays;
final isOverdue = daysUntilDue < 0;
return Card(
child: Column(
children: [
// ...保养信息
Container(
decoration: BoxDecoration(
color: isOverdue
? Colors.red.withValues(alpha: 0.1)
: daysUntilDue < 30
? Colors.orange.withValues(alpha: 0.1)
: Colors.green.withValues(alpha: 0.1),
),
child: Text(
isOverdue
? '已逾期${-daysUntilDue}天'
: daysUntilDue < 30
? '还有$daysUntilDue天'
: DateFormat('yyyy-MM-dd').format(record.nextDueDate),
),
),
],
),
);
}
3.3 费用统计逻辑
3.3.1 费用汇总流程
费用统计页面
计算保养费用
计算加油费用
计算其他费用
遍历保养记录
累加cost字段
遍历加油记录
累加totalCost字段
遍历费用记录
累加amount字段
总费用
分类统计
按车辆统计
3.3.2 费用计算实现
dart
Widget _buildStatisticsPage() {
final totalMaintenanceCost = _maintenanceRecords.fold<double>(
0, (sum, r) => sum + r.cost
);
final totalFuelCost = _fuelRecords.fold<double>(
0, (sum, r) => sum + r.totalCost
);
final totalOtherCost = _expenseRecords.fold<double>(
0, (sum, r) => sum + r.amount
);
final totalCost = totalMaintenanceCost + totalFuelCost + totalOtherCost;
// 分类统计
final Map<String, double> categoryCosts = {};
for (var record in _expenseRecords) {
categoryCosts[record.category] =
(categoryCosts[record.category] ?? 0) + record.amount;
}
categoryCosts['保养'] = totalMaintenanceCost;
categoryCosts['加油'] = totalFuelCost;
// ...
}
3.4 页面结构设计
3.4.1 主页面布局
主页面
底部导航栏
IndexedStack
我的车辆
保养记录
加油记录
费用统计
车辆列表页
保养列表页
加油列表页
统计展示页
3.5 状态管理
3.5.1 核心状态变量
dart
class _VehicleHomePageState extends State<VehicleHomePage> {
int _selectedIndex = 0; // 当前Tab索引
final List<Vehicle> _vehicles = []; // 车辆列表
final List<MaintenanceRecord> _maintenanceRecords = []; // 保养记录
final List<FuelRecord> _fuelRecords = []; // 加油记录
final List<ExpenseRecord> _expenseRecords = []; // 费用记录
}
四、UI设计规范
4.1 配色方案
应用采用蓝色主题风格,体现专业与可靠:
| 颜色类型 | 色值 | 用途 |
|---|---|---|
| 主色 | Blue | AppBar、强调、按钮 |
| 保养 | Blue | 保养相关标识 |
| 加油 | Red | 加油相关标识 |
| 费用 | Orange | 费用相关标识 |
| 逾期 | Red | 逾期提醒 |
| 临近 | Orange | 临近提醒 |
| 正常 | Green | 正常状态 |
4.2 燃料类型颜色映射
| 燃料类型 | 颜色 | 说明 |
|---|---|---|
| 汽油 | 红色 | 传统燃油动力 |
| 柴油 | 棕色 | 柴油动力 |
| 电动 | 绿色 | 清洁能源 |
| 混动 | 蓝色 | 混合动力 |
4.3 组件规范
4.3.1 车辆卡片
┌─────────────────────────────────────────────────────────────┐
│ ┌────┐ 比亚迪 汉EV ⋮ │
│ │ 🚗 │ 电动 京A12345 │
│ └────┘ │
├─────────────────────────────────────────────────────────────┤
│ ⚡ 🔧 ⛽ │
│ 15680 1 0 │
│ 公里 保养 加油 │
└─────────────────────────────────────────────────────────────┘
4.3.2 保养卡片
┌─────────────────────────────────────────────────────────────┐
│ ┌────┐ 机油更换 ¥580 │
│ │ 🔧 │ 丰田 凯美瑞 │
│ └────┘ │
│ 📅 2024-02-20 ⚡ 40000公里 │
│ 🏪 丰田4S店 │
├─────────────────────────────────────────────────────────────┤
│ 下次保养 还有180天 │
└─────────────────────────────────────────────────────────────┘
4.3.3 加油卡片
┌─────────────────────────────────────────────────────────────┐
│ ┌────┐ 丰田 凯美瑞 ¥342.3 │
│ │ ⛽ │ 2024-03-15 14:30 │
│ └────┘ │
│ 加油量: 42.0L 单价: ¥8.15/L 里程: 45230km [满箱] │
│ 📍 中石油加油站 │
└─────────────────────────────────────────────────────────────┘
4.3.4 费用统计卡片
┌─────────────────────────────────────────────────────────────┐
│ 总支出 ¥16,195│
│ │
│ 费用构成 │
│ 🔧 保养费用 ¥760 │
│ ⛽ 加油费用 ¥715 │
│ ⋯ 其他费用 ¥14,720 │
├─────────────────────────────────────────────────────────────┤
│ 分类统计 │
│ 保险 ¥11,000 ████████████████████░░░░ 68.0% │
│ 保养 ¥760 ██░░░░░░░░░░░░░░░░░░░░░░ 4.7% │
│ 加油 ¥715 ██░░░░░░░░░░░░░░░░░░░░░░ 4.4% │
└─────────────────────────────────────────────────────────────┘
4.4 交互设计
4.4.1 操作方式
| 操作 | 手势 | 效果 |
|---|---|---|
| 查看车辆详情 | 点击卡片 | 弹出详情面板 |
| 添加车辆 | 点击+按钮 | 弹出添加表单 |
| 编辑车辆 | 点击⋮菜单 | 选择编辑 |
| 删除车辆 | 点击⋮菜单 | 确认删除 |
| 添加保养 | 点击+按钮 | 弹出保养表单 |
| 添加加油 | 点击+按钮 | 弹出加油表单 |
| 切换Tab | 点击底部导航 | 切换页面 |
五、核心功能实现
5.1 主页面构建
dart
@override
Widget build(BuildContext context) {
return Scaffold(
body: IndexedStack(
index: _selectedIndex,
children: [
_buildVehicleListPage(),
_buildMaintenancePage(),
_buildFuelPage(),
_buildStatisticsPage(),
],
),
bottomNavigationBar: NavigationBar(
selectedIndex: _selectedIndex,
onDestinationSelected: (index) {
setState(() {
_selectedIndex = index;
});
},
destinations: const [
NavigationDestination(icon: Icon(Icons.directions_car_outlined), label: '我的车辆'),
NavigationDestination(icon: Icon(Icons.build_outlined), label: '保养记录'),
NavigationDestination(icon: Icon(Icons.local_gas_station_outlined), label: '加油记录'),
NavigationDestination(icon: Icon(Icons.analytics_outlined), label: '费用统计'),
],
),
);
}
5.2 车辆卡片
dart
Widget _buildVehicleCard(Vehicle vehicle) {
final maintenanceCount = _maintenanceRecords.where((r) => r.vehicleId == vehicle.id).length;
final fuelCount = _fuelRecords.where((r) => r.vehicleId == vehicle.id).length;
return Card(
margin: const EdgeInsets.only(bottom: 16),
child: InkWell(
onTap: () => _showVehicleDetail(vehicle),
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
children: [
Row(
children: [
Container(
width: 60,
height: 60,
decoration: BoxDecoration(
color: vehicle.fuelType.color.withValues(alpha: 0.1),
borderRadius: BorderRadius.circular(12),
),
child: Icon(Icons.directions_car, color: vehicle.fuelType.color),
),
// ...车辆信息
PopupMenuButton<String>(
onSelected: (value) {
if (value == 'edit') _showEditVehicleDialog(vehicle);
else if (value == 'delete') _deleteVehicle(vehicle);
},
itemBuilder: (context) => [
const PopupMenuItem(value: 'edit', child: Text('编辑')),
const PopupMenuItem(value: 'delete', child: Text('删除')),
],
),
],
),
const Divider(height: 24),
Row(
children: [
Expanded(child: _buildInfoItem(Icons.speed, '${vehicle.currentMileage}', '公里')),
Expanded(child: _buildInfoItem(Icons.build, '$maintenanceCount', '保养')),
Expanded(child: _buildInfoItem(Icons.local_gas_station, '$fuelCount', '加油')),
],
),
],
),
),
),
);
}
5.3 保养提醒状态
dart
Widget _buildMaintenanceCard(MaintenanceRecord record) {
final vehicle = _vehicles.firstWhere((v) => v.id == record.vehicleId);
final daysUntilDue = record.nextDueDate.difference(DateTime.now()).inDays;
final isOverdue = daysUntilDue < 0;
return Card(
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
children: [
// ...保养信息
const Divider(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text('下次保养'),
Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
decoration: BoxDecoration(
color: isOverdue
? Colors.red.withValues(alpha: 0.1)
: daysUntilDue < 30
? Colors.orange.withValues(alpha: 0.1)
: Colors.green.withValues(alpha: 0.1),
borderRadius: BorderRadius.circular(4),
),
child: Text(
isOverdue
? '已逾期${-daysUntilDue}天'
: daysUntilDue < 30
? '还有$daysUntilDue天'
: DateFormat('yyyy-MM-dd').format(record.nextDueDate),
style: TextStyle(
color: isOverdue
? Colors.red
: daysUntilDue < 30
? Colors.orange
: Colors.green,
),
),
),
],
),
],
),
),
);
}
5.4 费用统计
dart
Widget _buildStatisticsPage() {
final totalMaintenanceCost = _maintenanceRecords.fold<double>(0, (sum, r) => sum + r.cost);
final totalFuelCost = _fuelRecords.fold<double>(0, (sum, r) => sum + r.totalCost);
final totalOtherCost = _expenseRecords.fold<double>(0, (sum, r) => sum + r.amount);
final totalCost = totalMaintenanceCost + totalFuelCost + totalOtherCost;
return Scaffold(
appBar: AppBar(title: const Text('费用统计')),
body: SingleChildScrollView(
padding: const EdgeInsets.all(16),
child: Column(
children: [
_buildTotalCostCard(totalCost),
const SizedBox(height: 16),
_buildCostBreakdownCard(totalMaintenanceCost, totalFuelCost, totalOtherCost),
const SizedBox(height: 16),
_buildCategoryChart(categoryCosts),
const SizedBox(height: 16),
_buildVehicleCostList(),
],
),
),
);
}
5.5 车辆表单弹窗
dart
void _showVehicleFormDialog(Vehicle? existingVehicle) {
final isEditing = existingVehicle != null;
final brandController = TextEditingController(text: existingVehicle?.brand ?? '');
final modelController = TextEditingController(text: existingVehicle?.model ?? '');
// ...其他控制器
FuelType selectedFuelType = existingVehicle?.fuelType ?? FuelType.gasoline;
showModalBottomSheet(
context: context,
isScrollControlled: true,
builder: (context) => StatefulBuilder(
builder: (context, setModalState) => DraggableScrollableSheet(
initialChildSize: 0.9,
maxChildSize: 0.95,
minChildSize: 0.5,
expand: false,
builder: (context, scrollController) => Container(
padding: const EdgeInsets.all(20),
child: ListView(
controller: scrollController,
children: [
// 品牌输入框
TextField(controller: brandController, decoration: const InputDecoration(labelText: '品牌')),
// 型号输入框
TextField(controller: modelController, decoration: const InputDecoration(labelText: '型号')),
// 燃料类型选择
Wrap(
spacing: 8,
children: FuelType.values.map((type) {
return ChoiceChip(
label: Text(type.label),
selected: selectedFuelType == type,
selectedColor: type.color.withValues(alpha: 0.2),
onSelected: (selected) {
if (selected) setModalState(() => selectedFuelType = type);
},
);
}).toList(),
),
// ...其他字段
FilledButton(
onPressed: () {
// 保存逻辑
},
child: Text(isEditing ? '保存' : '添加'),
),
],
),
),
),
),
);
}
六、车辆管理知识拓展
6.1 保养周期参考
保养项目
机油更换
5000-10000公里
空气滤芯
10000-20000公里
刹车检查
20000-30000公里
轮胎换位
10000公里
冷却液
2年或40000公里
变速箱油
40000-60000公里
6.2 油耗计算方法
| 计算方式 | 公式 | 说明 |
|---|---|---|
| 百公里油耗 | (加油量 / 行驶里程) × 100 | 常用计算方式 |
| 每公里成本 | 总加油费用 / 总行驶里程 | 成本核算 |
| 综合油耗 | 多次加油平均值 | 更准确的数据 |
6.3 车辆费用构成
35% 30% 15% 10% 10% 车辆年度费用构成 保险费用 加油费用 保养维修 停车费用 其他费用
6.4 新能源车与燃油车对比
| 对比项 | 燃油车 | 电动车 | 混动车 |
|---|---|---|---|
| 能源成本 | 较高 | 较低 | 中等 |
| 保养频率 | 较高 | 较低 | 中等 |
| 续航里程 | 较长 | 较短 | 较长 |
| 环保程度 | 一般 | 优秀 | 良好 |
七、扩展功能规划
7.1 后续版本规划
2024-01-07 2024-01-14 2024-01-21 2024-01-28 2024-02-04 2024-02-11 2024-02-18 2024-02-25 2024-03-03 2024-03-10 2024-03-17 车辆管理功能 保养记录功能 加油记录功能 费用统计功能 数据持久化 保养推送提醒 油耗趋势分析 多用户支持 数据导出功能 云端同步 V1.0 基础版本 V1.1 增强版本 V1.2 进阶版本 车辆管理应用开发计划
7.2 功能扩展建议
7.2.1 数据持久化
| 功能 | 说明 |
|---|---|
| 本地存储 | SharedPreferences / SQLite |
| 数据备份 | 导出JSON/CSV文件 |
| 数据恢复 | 从备份文件恢复 |
7.2.2 智能提醒
| 功能 | 说明 |
|---|---|
| 保养提醒 | 根据里程/时间智能提醒 |
| 保险到期 | 提前30天提醒续保 |
| 年检提醒 | 年检到期前提醒 |
7.2.3 数据分析
| 功能 | 说明 |
|---|---|
| 油耗趋势 | 月度/年度油耗变化 |
| 费用报告 | 自动生成费用报告 |
| 保养建议 | 基于里程的保养建议 |
八、注意事项
8.1 开发注意事项
-
颜色处理 :使用
withValues(alpha:)替代已废弃的withOpacity() -
日期格式化:使用intl包的DateFormat进行日期格式化
-
状态同步:弹窗使用StatefulBuilder保持状态同步
-
数据关联:删除车辆时需级联删除相关记录
8.2 用户体验优化
🚗 用户体验建议 🚗
- 车辆信息一目了然
- 保养提醒及时准确
- 费用统计清晰直观
- 操作流程简单便捷
8.3 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 日期格式错误 | DateFormat配置错误 | 检查格式字符串 |
| 弹窗状态不同步 | StatefulBuilder未使用 | 使用setModalState |
| 关联数据未删除 | 未实现级联删除 | 删除时清理关联记录 |
| 费用计算错误 | 数据类型转换问题 | 使用double类型 |
九、运行说明
9.1 环境要求
| 环境 | 版本要求 |
|---|---|
| Flutter SDK | >= 3.0.0 |
| Dart SDK | >= 2.17.0 |
| intl包 | ^0.19.0 |
| 鸿蒙OS | API 21+ |
9.2 运行命令
bash
# 查看可用设备
flutter devices
# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_vehicle.dart
# 运行到Windows
flutter run -d windows -t lib/main_vehicle.dart
# 代码分析
flutter analyze lib/main_vehicle.dart
十、总结
车辆管理应用通过完善的功能设计,帮助车主实现车辆信息的系统化管理。应用支持多车辆集中管理,每辆车可独立记录品牌、型号、车牌、里程等基本信息。保养记录功能详细记录每次保养的类型、费用、里程,并智能计算下次保养提醒时间,让车主不再错过保养时机。
加油记录功能完整记录每次加油的油量、单价、总价,便于后续油耗分析。费用统计模块提供多维度费用分析,包括保养费用、加油费用、其他费用的分类统计,以及按车辆维度的费用汇总,让用车成本一目了然。
界面设计采用蓝色主题风格,体现专业与可靠。车辆卡片通过燃料类型颜色区分不同动力类型,保养卡片通过颜色状态直观展示保养提醒状态。应用采用Material Design 3设计规范,遵循Flutter最佳实践,代码结构清晰,易于维护和扩展。
车辆管理,让爱车养护更轻松!