diff --git a/lib/features/home/presentation/pages/productDesc.dart b/lib/features/home/presentation/pages/productDesc.dart index fa86d523..f00b79b8 100644 --- a/lib/features/home/presentation/pages/productDesc.dart +++ b/lib/features/home/presentation/pages/productDesc.dart @@ -1,425 +1,928 @@ import 'package:flutter/material.dart'; -import 'package:markdown_widget/markdown_widget.dart'; +import 'package:flutter_markdown/flutter_markdown.dart'; -class ProductPage extends StatefulWidget { - const ProductPage({super.key}); +class ManualPage extends StatefulWidget { + const ManualPage({super.key}); @override - State createState() => _ProductPageState(); + State createState() => _ManualPageState(); } -class _ProductPageState extends State { - // 当前显示内容:0=主菜单 1=产品亮点 2=功能介绍 3=产品参数 4=应用场景 - int currentPage = 0; +class _ManualPageState extends State { + int _selectedIndex = 0; + bool showMenu = true; + String currentType = ''; - // 功能介绍列表 - final List funcList = const [ - '两轮驱动履带式行走系统,超强地形适应能力,无极变速,轻松爬坡越障,履带爬坡角度≤35°,履带前仰角40°,垂直越障≤15cm。', - '3kW闭环无刷电机独立驱动行走系统,高速传动装置效率达到95%以上,整机扭矩达到175N·m,轻松爬坡越障。闭环车速控制和检测系统,0-4km/h无级变速。', - '坦克履型设计,接近角达到45°,超强地形适应能力,爬坡角度≤40°,垂直越障≤15cm;复合材料履带,抗拉强度高、抗切能力好,抗磨损;接地比压小,轻松通过烂泥沼泽地。', - '方向速度手动操作模式(MT)和方向速度自动操作模式(AT)满足不同操作者使用习惯和场景使用方式。', - '自主研发自适应增程系统,根据负载变化调整输出功率,节省能耗,尖峰抑制稳流系统,实现稳定电力输出配备大功率风冷发电机和过滤系统,可实现大功率交直流放电,满足长时间使用要求。', - '户外等级控制箱,操作面板集中布置,防护等级IP55,操作、故障排査信息和注意事项醒目张贴,方便操作和检修。', - '工业级遥控器,防护等级IP65,有跌落防误碰保护;标准433MHz波段,无需无线电备案,直接使用;遥控信号绕障和穿越能力强,抗干扰能力强,同一空间至少支持100台机器同时作业,遥控距离达到500m;锂离子充电电池,可充可换,满足各种需要。', - '整机三色灯显示机器各种状态,包括油量预警、电量预警、直行保持、电控箱温度预警和安全倾角预警等;遥控实现整机操控,包括发动机一键启停、行走操控、速度操控、割盘升降和割刀转速等;遥控显示屏实时显示作业状态,包括作业时间、保养提醒、驱动器情况、作业模式、行驶模式、安全倾角检测、障碍物检测车灯状态、信号强度和遥控器电量等。', + final List menuTitles = const ['安全警示及使用注意事项', '机器使用说明', '保养与维修', '故障处置', '本商品搬运的要领', '关于三包与售后服务']; + + final List>> subMenus = [ + [ + {'title': '特别警告', 'type': 'alert'}, + {'title': '关于本产品的警告标签说明', 'type': 'alertinstruction'}, + {'title': '安全操作须知', 'type': 'safety'}, + {'title': '安全驾驶·安全作业须知', 'type': 'safetywork'}, + ], + [ + {'title': '发动前的准备', 'type': 'prepare'}, + {'title': '启动方法', 'type': 'startmethod'}, + {'title': '割草方法', 'type': 'work'}, + {'title': '停车方法', 'type': 'stop'}, + {'title': '遥控器使用', 'type': 'controluse'}, + ], + [ + {'title': '定期检查表', 'type': 'check1'}, + {'title': '行走部分及割草部分的检查', 'type': 'check2'}, + {'title': '加油、加水以及上润滑脂、润滑油一览表', 'type': 'supply'}, + {'title': '消耗零件(更换零件)一览表', 'type': 'check4'}, + {'title': '发动机', 'type': 'check5'}, + {'title': '行走装置', 'type': 'check6'}, + {'title': '使用后的维修', 'type': 'check7'}, + ], + [ + {'title': '问题诊断表', 'type': 'breakdown1'}, + ], + [ + {'title': '搬运要领', 'type': 'starpoint'}, + ], + [ + {'title': '关于三包', 'type': 'about1'}, + {'title': '关于售后服务', 'type': 'about2'}, + {'title': '关于零件的补给年限(期间)', 'type': 'supplyyear'}, + ], ]; - // 产品亮点 - final List> starPoints = const [ - {'title': '整机设计', 'content': '承载式车身、高效大功率行走系统、坦克履型、油电混动、防溜坡系统、主被动溜坡浮动式刀盘、空气辅助式提升机构、自适应割草装置'}, - {'title': '控制系统', 'content': '车规级控制和电气系统、工业级防干扰遥控系统、车速控制和检测系统、牵引力控制系统、手动和自动行驶操作模式、整机状态液晶显示。'}, - {'title': '动力系统', 'content': '自适应增程系统、本田顶级发动机、大功率交直流放电功能。'}, - {'title': '安全配置', 'content': '车身稳定系统、ABS刹车装置、电子防翻滚功能、倾斜保护功能、急速、坠落和翻滚停机功能、无操作自动关机。'}, - {'title': '智能功能', 'content': '直行保持功能、防碰撞功能、碰撞停机功能。'}, - {'title': '扩展功能', 'content': '路径规划、巡检探测、物联控制。'}, - ]; + late List expandedList; - // 应用场景 - final List> sceneList = const [ - {'img': 'assets/images/scene4.png', 'title': '果园林业'}, - {'img': 'assets/images/scene1.png', 'title': '光伏储能'}, - {'img': 'assets/images/scene2.png', 'title': '公路路政'}, - {'img': 'assets/images/scene3.png', 'title': '农业生产'}, - {'img': 'assets/images/scene5.png', 'title': '市政河堤'}, - {'img': 'assets/images/scene6.png', 'title': '机场场所'}, - ]; + @override + void initState() { + super.initState(); + expandedList = List.filled(menuTitles.length, false); + } - // 产品参数 markdown - final String productParamMd = ''' -# 整车信息 -| 项目 | 单位 | MC700 | -| ---- | ---- | ---- | -| 外形尺寸(长×宽×高) | mm | 1429×1090×650 | -| 车体重量 | kg | 320 | -| 工作效率 | m²/h | 2500¹ | -| 最低离地高度 | mm | 90 | -| 续航能力(纯电) | h | 0.5 | -| 水平运动额定负载 | kg | 500 | -| 动力源 | | 混合动力 | -| 整机显示信息 | | 电量、电压、温度 | -| 遥控器显示信息 | | 电量、失联报警 | -| 电池品牌 | | 理士 | -| 电芯成分 | | SLA(密封铅酸可充电电池) | -| 电池容量(20小时率) | Ah/hr | 23 | -| 低电量报警 | | 显示屏和三色灯 | -| 增程器 | | 自适应 | -| 发电机保护 | | 过滤网 | -| 外放电源 | V/W | 24/480(直流) | -| 外放电源接口 | | 点烟器 | -| 按钮 | | 304不锈钢带灯 | -| 箱内电气 | | 防震端子 | -| 箱外电气 | | 车规级线束 | -| 防护等级 | | IP55 | - -# 控制系统 -| 项目 | 单位 | MC700 | -| ---- | ---- | ---- | -| 控制器 | | ECU | -| 遥控器 | | 工业级数显屏 | -| 遥控距离 | m | ≤500 | -| 遥控信号 | MHz | 433 | -| 通信频率 | Hz | 10 | -| 发动机维护提醒 | | 屏幕图标提醒 | -| 自动驻车 | kg | 有 | -| 坡道辅助起步 | | 有 | -| 车身倾斜检测| | 有 | -| 车速检测系统 | | 有 | -| ABS刹车系统 | | 有 | -| 电子防御滚系统 | | 有 | -| 牵引力控制系统| | 有 | -| 车身稳定系统| | 有 | -| 抗干扰 || 百台设备互不干扰 | -| 传感器安装预留 | |LIDAR/CPS/RIDAR | -| 防护等级| |车规级ip65 | -'''; + final Map markdownMap = { + 'alert': _alert, + 'alertinstruction': _alertinstruction, + 'safety': _safety, + 'safetywork': _safetywork, + 'prepare': _prepare, + 'startmethod': _startmethod, + 'work': _work, + 'stop': _stop, + 'controluse': _controluse, + 'about1': _about1, + 'about2': _about2, + 'breakdown1': _breakdown1, + 'check1': _check1, + 'check2': _check2, + 'check4': _check4, + 'check5': _check5, + 'check6': _check6, + 'check7': _check7, + 'starpoint': _starpoint, + }; @override Widget build(BuildContext context) { return Scaffold( - body: Column( - children: [ - // 顶部标题栏 - _buildHeader(), - - // 内容区域 - Expanded(child: _buildContent()), - ], + backgroundColor: const Color(0xFFF7F8FA), + appBar: AppBar( + backgroundColor: Colors.white, + elevation: 1, + centerTitle: true, + title: Text( + showMenu ? '使用说明' : _getCurrentTitle(), + style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w600, color: Color(0xFF2A3A55)), + ), + //leading: IconButton( + // icon: const Icon(Icons.arrow_back_ios, size: 16, color: Color(0xFF4A5568)), + // onPressed: () { + // if (!showMenu) { + // setState(() => showMenu = true); + // } + // }, + //), ), + body: Column(children: [Expanded(child: showMenu ? _buildMenu() : _buildContent())]), ); } - Widget _buildHeader() { - String title = '产品介绍'; - if (currentPage == 1) title = '产品亮点'; - if (currentPage == 2) title = '功能介绍'; - if (currentPage == 3) title = '产品参数'; - if (currentPage == 4) title = '应用场景'; + Widget _buildMenu() { + return ListView( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + children: [for (int i = 0; i < menuTitles.length; i++) _buildMenuItem(i)], + ); + } + Widget _buildMenuItem(int index) { return Container( - padding: const EdgeInsets.symmetric(vertical: 10), - child: Row( - children: [ - // 返回按钮 —— 只在非主页显示 - if (currentPage != 0) - IconButton( - onPressed: () { - setState(() { - currentPage = 0; - }); - }, - icon: const Icon(Icons.arrow_back_ios, size: 16), - ), - - // 标题居中 - Expanded( - child: Text( - title, - textAlign: TextAlign.center, - style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w500), - ), - ), - - // 占位用,让标题绝对居中(对称占位) - if (currentPage != 0) const SizedBox(width: 48), - ], + margin: const EdgeInsets.only(bottom: 8), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 6, offset: const Offset(0, 2))], ), - ); - } - - /// 内容区域 - Widget _buildContent() { - switch (currentPage) { - case 1: - return _buildStarPoint(); - case 2: - return _buildFunction(); - case 3: - return _buildParam(); - case 4: - return _buildScene(); - default: - return _buildMainMenu(); - } - } - - /// 主菜单 - Widget _buildMainMenu() { - return SingleChildScrollView( - padding: const EdgeInsets.symmetric(horizontal: 15), - child: Column( - children: [ - _menuItem('产品亮点', Icons.highlight_outlined, 1), - _menuItem('功能介绍', Icons.widgets_outlined, 2), - _menuItem('产品参数', Icons.table_chart_outlined, 3), - _menuItem('应用场景', Icons.place_outlined, 4), - ], - ), - ); - } - - /// 菜单条目 - Widget _menuItem(String title, IconData icon, int page) { - return InkWell( - onTap: () { - setState(() { - currentPage = page; - }); - }, - child: Container( - padding: const EdgeInsets.symmetric(vertical: 12), - decoration: const BoxDecoration( - border: Border(bottom: BorderSide(color: Colors.grey, width: 0.5)), - ), - child: Row( - children: [ - Icon(icon, size: 24, color: Colors.grey[700]), - const SizedBox(width: 8), - Text(title, style: const TextStyle(fontSize: 16)), - ], - ), - ), - ); - } - - /// 产品亮点 - Widget _buildStarPoint() { - return SingleChildScrollView( - padding: const EdgeInsets.all(15), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - ...starPoints.map((item) { - return Padding( - padding: const EdgeInsets.only(bottom: 16), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - const Icon(Icons.check_circle_outline, size: 20, color: Colors.grey), - const SizedBox(width: 6), - Text(item['title']!, style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold)), - ], - ), - const SizedBox(height: 4), - Text(item['content']!), - ], - ), - ); - }), - const SizedBox(height: 20), - - // 图片(替换为你的资源) - Image.asset('assets/images/startpoint.png'), - ], - ), - ); - } - - /// 功能介绍 - Widget _buildFunction() { - return SingleChildScrollView( - padding: const EdgeInsets.all(15), - child: Column( - children: [ - ...funcList.map((text) { - return Padding( - padding: const EdgeInsets.only(left: 15, bottom: 8), + InkWell( + borderRadius: BorderRadius.circular(12), + onTap: () { + setState(() { + expandedList[index] = !expandedList[index]; + }); + }, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14), child: Row( - crossAxisAlignment: CrossAxisAlignment.start, children: [ - const Text('• ', style: TextStyle(fontSize: 16)), - Expanded(child: Text(text)), + const Icon(Icons.description, size: 20, color: Color(0xFF5A6B87)), + const SizedBox(width: 10), + Expanded( + child: Text( + menuTitles[index], + style: const TextStyle(fontSize: 15, fontWeight: FontWeight.w500, color: Color(0xFF2A3A55)), + ), + ), + Icon(expandedList[index] ? Icons.keyboard_arrow_up : Icons.keyboard_arrow_down, color: const Color(0xFF8A98AC)), ], ), - ); - }), - const SizedBox(height: 16), - //Image.asset('assets/images/card.png'), + ), + ), + if (expandedList[index]) + Padding( + padding: const EdgeInsets.only(left: 20, bottom: 8), + child: Column( + children: subMenus[index].map((item) { + return InkWell( + borderRadius: BorderRadius.circular(8), + onTap: () { + setState(() { + showMenu = false; + _selectedIndex = index; + currentType = item['type']; + }); + }, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10), + child: Row( + children: [ + Container( + width: 4, + height: 4, + decoration: BoxDecoration(color: const Color(0xFF4A88E4), borderRadius: BorderRadius.circular(2)), + ), + const SizedBox(width: 10), + Text(item['title'], style: const TextStyle(fontSize: 14, color: Color(0xFF4A5568))), + ], + ), + ), + ); + }).toList(), + ), + ), ], ), ); } - /// 产品参数(markdown) - Widget _buildParam() { - return SingleChildScrollView( - padding: const EdgeInsets.all(10), - child: Container( - width: double.infinity, // 关键:固定容器宽度,避免布局崩溃 + Widget _buildContent() { + return SingleChildScrollView(padding: const EdgeInsets.all(16), physics: const BouncingScrollPhysics(), child: _getContentWidget()); + } + + Widget _getContentWidget() { + if (currentType == 'supply') { + return _buildSupplyTable(); + } else if (currentType == 'breakdown1') { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(12)), child: Column( - mainAxisSize: MainAxisSize.min, // 限制Column高度为内容高度 crossAxisAlignment: CrossAxisAlignment.start, children: [ - // 手动渲染Markdown内容,避免内置滚动冲突 - const Text('整车信息', style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)), - // 整车信息表格(原生Flutter表格,无滚动冲突) - _buildVehicleInfoTable(), - const SizedBox(height: 20), - const Text('控制系统', style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)), - // 控制系统表格(原生Flutter表格) - _buildControlSystemTable(), + MarkdownBody( + data: _breakdown1, + styleSheet: MarkdownStyleSheet( + p: const TextStyle(fontSize: 15, height: 1.6, color: Color(0xFF333333)), + h3: const TextStyle(fontSize: 17, fontWeight: FontWeight.bold, color: Color(0xFF2A3A55)), + ), + ), + const SizedBox(height: 16), + _buildDiagnosticTable1(), + const SizedBox(height: 24), + const Text( + "发电机", + style: TextStyle(fontSize: 17, fontWeight: FontWeight.bold, color: Color(0xFF2A3A55)), + ), + const SizedBox(height: 8), + _buildDiagnosticTable2(), + const SizedBox(height: 24), + const Text( + "行走装置", + style: TextStyle(fontSize: 17, fontWeight: FontWeight.bold, color: Color(0xFF2A3A55)), + ), + const SizedBox(height: 8), + _buildDiagnosticTable3(), + const SizedBox(height: 24), + const Text( + "割草装置", + style: TextStyle(fontSize: 17, fontWeight: FontWeight.bold, color: Color(0xFF2A3A55)), + ), + const SizedBox(height: 8), + _buildDiagnosticTable4(), ], ), + ); + } else if (currentType == 'supplyyear') { + return Container( + width: double.infinity, + padding: const EdgeInsets.all(20), + decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(12)), + child: const Text('本商品单个零件的提供年限为停止生产后三年。', style: TextStyle(fontSize: 16, color: Color(0xFF333333))), + ); + } else if (markdownMap.containsKey(currentType)) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(12)), + child: MarkdownBody( + data: markdownMap[currentType]!, + styleSheet: MarkdownStyleSheet( + p: const TextStyle(fontSize: 15, height: 1.6, color: Color(0xFF333333)), + h2: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold, color: Color(0xFF2A3A55)), + h3: const TextStyle(fontSize: 17, fontWeight: FontWeight.bold, color: Color(0xFF2A3A55)), + listBullet: const TextStyle(color: Color(0xFF4A88E4)), + ), + imageBuilder: (uri, title, alt) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.asset("assets/images/$uri", fit: BoxFit.contain, width: double.infinity), + ), + ); + }, + ), + ); + } else { + return Center( + child: Container( + padding: const EdgeInsets.all(20), + decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(12)), + child: const Text("暂无内容", style: TextStyle(fontSize: 16, color: Color(0xFF8A98AC))), + ), + ); + } + } + + String _getCurrentTitle() { + for (var list in subMenus) { + for (var item in list) { + if (item['type'] == currentType) { + return item['title']; + } + } + } + return '详情'; + } + + Widget _buildSupplyTable() { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(12)), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + '加油、加水以及上润滑脂、润滑油一览表', + style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold, color: Color(0xFF2A3A55)), + ), + const SizedBox(height: 12), + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Table( + border: TableBorder.all(color: const Color(0xFFE5E9F0), width: 1), + columnWidths: const {0: FixedColumnWidth(80), 1: FixedColumnWidth(180), 2: FixedColumnWidth(280), 3: FixedColumnWidth(80)}, + children: [ + TableRow( + decoration: const BoxDecoration(color: Color(0xFFF7F8FA)), + children: [ + TableCell(child: _tableCellText('项目', isHeader: true)), + TableCell(child: _tableCellText('补给(交换)的时期', isHeader: true)), + TableCell(child: _tableCellText('推荐品种', isHeader: true)), + TableCell(child: _tableCellText('容量', isHeader: true)), + ], + ), + _tableRowSimple(['燃料', '随时', '汽车用91号以上无铅汽油或乙醇含量不超过10%的无铅汽油(E10)', '10L']), + _tableRowSimple(['发动机机油', '每日点检有不足时补给,交换初次:20小时,初次以后:每100小时', 'SAE分类 一般用途:10W-30或5W-30', '1.7L']), + _tableRowSimple(['行走轴承', '每半年', '车台润滑脂', '-']), + _tableRowSimple(['减速机', '每半年', '美孚XHP222', '-']), + _tableRowSimple(['充电或更换电池', '随时,没有电的情况下', '遥控器使用专用充电器;动力电池使用220V充电', '23Ah']), + ], + ), + ), + ], + ), + ); + } + + TableRow _tableRowSimple(List items) { + return TableRow(children: items.map((e) => _tableCellText(e)).toList()); + } + + static Widget _tableCellText(String text, {bool isHeader = false}) { + return Padding( + padding: const EdgeInsets.all(10), + child: Text( + text, + style: TextStyle( + fontSize: isHeader ? 14 : 13, + fontWeight: isHeader ? FontWeight.w600 : FontWeight.w400, + color: isHeader ? const Color(0xFF2A3A55) : const Color(0xFF4A5568), + ), ), ); } - // 整车信息表格(原生Flutter实现,无滚动冲突) - Widget _buildVehicleInfoTable() { - return SingleChildScrollView( - scrollDirection: Axis.horizontal, // 仅表格横向滚动 - child: Table( - border: TableBorder.all(color: Colors.grey.shade300, width: 1), - columnWidths: const {0: FixedColumnWidth(200), 1: FixedColumnWidth(80), 2: FixedColumnWidth(150)}, - children: [ - // 表头 - TableRow( - decoration: BoxDecoration(color: Colors.grey.shade100), - children: const [ - Padding( - padding: EdgeInsets.all(8), - child: Text('项目', style: TextStyle(fontWeight: FontWeight.bold)), - ), - Padding( - padding: EdgeInsets.all(8), - child: Text('单位', style: TextStyle(fontWeight: FontWeight.bold)), - ), - Padding( - padding: EdgeInsets.all(8), - child: Text('MC700', style: TextStyle(fontWeight: FontWeight.bold)), - ), - ], - ), - // 表格内容 - _buildTableRow('外形尺寸(长×宽×高)', 'mm', '1429×1090×650'), - _buildTableRow('车体重量', 'kg', '320'), - _buildTableRow('工作效率', 'm²/h', '2500¹'), - _buildTableRow('最低离地高度', 'mm', '90'), - _buildTableRow('续航能力(纯电)', 'h', '0.5'), - _buildTableRow('水平运动额定负载', 'kg', '500'), - _buildTableRow('动力源', '', '混合动力'), - _buildTableRow('整机显示信息', '', '电量、电压、温度'), - _buildTableRow('遥控器显示信息', '', '电量、失联报警'), - _buildTableRow('电池品牌', '', '理士'), - _buildTableRow('电芯成分', '', 'SLA(密封铅酸可充电电池)'), - _buildTableRow('电池容量(20小时率)', 'Ah/hr', '23'), - _buildTableRow('低电量报警', '', '显示屏和三色灯'), - _buildTableRow('增程器', '', '自适应'), - _buildTableRow('发电机保护', '', '过滤网'), - _buildTableRow('外放电源', 'V/W', '24/480(直流)'), - _buildTableRow('外放电源接口', '', '点烟器'), - _buildTableRow('按钮', '', '304不锈钢带灯'), - _buildTableRow('箱内电气', '', '防震端子'), - _buildTableRow('箱外电气', '', '车规级线束'), - _buildTableRow('防护等级', '', 'IP55'), - ], - ), - ); - } - - // 控制系统表格(原生Flutter实现) - Widget _buildControlSystemTable() { + Widget _buildDiagnosticTable1() { return SingleChildScrollView( scrollDirection: Axis.horizontal, child: Table( - border: TableBorder.all(color: Colors.grey.shade300, width: 1), - columnWidths: const {0: FixedColumnWidth(200), 1: FixedColumnWidth(80), 2: FixedColumnWidth(150)}, + border: TableBorder.all(color: const Color(0xFFE5E9F0), width: 1), + columnWidths: const {0: FixedColumnWidth(180), 1: FixedColumnWidth(180), 2: FixedColumnWidth(220)}, children: [ - // 表头 - TableRow( - decoration: BoxDecoration(color: Colors.grey.shade100), - children: const [ - Padding( - padding: EdgeInsets.all(8), - child: Text('项目', style: TextStyle(fontWeight: FontWeight.bold)), - ), - Padding( - padding: EdgeInsets.all(8), - child: Text('单位', style: TextStyle(fontWeight: FontWeight.bold)), - ), - Padding( - padding: EdgeInsets.all(8), - child: Text('MC700', style: TextStyle(fontWeight: FontWeight.bold)), - ), - ], - ), - // 表格内容 - _buildTableRow('控制器', '', 'ECU'), - _buildTableRow('遥控器', '', '工业级数显屏'), - _buildTableRow('遥控距离', 'm', '≤500'), - _buildTableRow('遥控信号', 'MHz', '433'), - _buildTableRow('通信频率', 'Hz', '10'), - _buildTableRow('发动机维护提醒', '', '屏幕图标提醒'), - _buildTableRow('自动驻车', 'kg', '有'), - _buildTableRow('坡道辅助起步', '', '有'), - _buildTableRow('车身倾斜检测', '', '有'), - _buildTableRow('车速检测系统', '', '有'), - _buildTableRow('ABS刹车系统', '', '有'), - _buildTableRow('电子防御滚系统', '', '有'), - _buildTableRow('牵引力控制系统', '', '有'), - _buildTableRow('车身稳定系统', '', '有'), - _buildTableRow('抗干扰', '', '百台设备互不干扰'), - _buildTableRow('传感器安装预留', '', 'LIDAR/CPS/RIDAR'), - _buildTableRow('防护等级', '', '车规级ip65'), + _tableHeader(), + _tableRow("发动机无法启动或很难启动", "没有燃料", "补充燃料", isFirst: true), + _tableRow("", "燃料无法抽取", "检查油门开关、油管"), + _tableRow("", "气温过低", "按照启动方法启动3-5次"), + _tableRow("", "火花塞打火不良", "拆卸清扫或更换"), + _tableRow("", "启动电压低", "充满电或者更换启动电池"), + _tableRow("", "喷油嘴或者过滤器堵塞", "清洁或者更换过滤器"), + _tableRow("", "其他", "按【启动方法】再启动,仍无法启动时,请联系销售店"), + _tableRow("中途熄火", "暖机不足", "充分暖机", isFirst: true), + _tableRow("", "割刀打到异物", "移动到平坦位置,检查割刀是否完整后重新发动"), + _tableRow("", "割刀柄缠绕异物", "去除异物,检查割刀是否完整后重新发动"), + _tableRow("发动机突然停止", "没有燃料", "补给", isFirst: true), + _tableRow("", "受到硬物冲击", "挪位置后再尝试启动"), + _tableRow("", "其他", "联系销售店"), + _tableRow("低速空转状态不良(发动机的旋转不稳定)", "空气过滤器的网孔堵塞", "清扫或交换", isFirst: true), + _tableRow("", "风扇处网孔堵塞", "清扫"), + _tableRow("", "其他", "联系销售店"), + _tableRow("输出或加速不足", "燃料不良", "更换", isFirst: true), + _tableRow("", "空气过滤器的网孔堵塞", "清扫或交换"), + _tableRow("", "风扇处网孔堵塞", "清扫"), + _tableRow("", "超负荷", "减荷"), + _tableRow("", "油门开关运行不畅", "清洁转轴或调节拉线钢丝"), + _tableRow("", "其他", "联系销售店"), + _tableRow("发动机附近有异常声音或异常振动", "停机检查升降等部件是否有松动", "联系销售店", isFirst: true), + _tableRow("发动机机油消耗过快", "", "联系销售店或本田售后店", isFirst: true), + _tableRow("发热", "发动机机油不足", "补给", isFirst: true), + _tableRow("燃料消耗过快", "空气过滤器的网孔堵塞", "清扫或更换", isFirst: true), + _tableRow("", "其他", "联系销售店"), + _tableRow("大量黑烟排出(状态不良)", "空气过滤器的网孔堵塞", "更换合适的机油", isFirst: true), + _tableRow("", "风门开合不畅", "清洁转轴或调节拉线钢丝"), + _tableRow("", "其他", "联系销售店"), + _tableRow("大量白烟排出(状态不良)", "燃料不良", "交换", isFirst: true), + _tableRow("", "发动机机油粘度不合适", "更换合适的机油"), + _tableRow("", "机油过多溢出至燃烧室", "燃烧至不冒白烟为止"), + _tableRow("", "其他", "联系销售店"), ], ), ); } - // 表格行工具方法 - TableRow _buildTableRow(String item, String unit, String value) { - return TableRow( + Widget _buildDiagnosticTable2() { + return Table( + border: TableBorder.all(color: const Color(0xFFE5E9F0), width: 1), + columnWidths: const {0: FixedColumnWidth(180), 1: FixedColumnWidth(180), 2: FixedColumnWidth(220)}, children: [ - Padding(padding: EdgeInsets.all(8), child: Text(item)), - Padding(padding: EdgeInsets.all(8), child: Text(unit)), - Padding(padding: EdgeInsets.all(8), child: Text(value)), + _tableHeader(), + _tableRow("发热量", "网孔堵塞", "清扫", isFirst: true), + _tableRow("", "检查三角带完好度和松紧度", "张紧或更换三角带"), + _tableRow("不发电", "其他", "联系销售店", isFirst: true), ], ); } - /// 应用场景 - Widget _buildScene() { - return GridView.builder( - padding: const EdgeInsets.all(10), - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, mainAxisSpacing: 10, crossAxisSpacing: 10, childAspectRatio: 1.0), - itemCount: sceneList.length, - itemBuilder: (ctx, index) { - final item = sceneList[index]; - return Column( - children: [ - // 图片(请自行替换为本地资源) - Image.asset(item['img']!, height: 100, fit: BoxFit.cover), - //Container( - // height: 100, - // color: Colors.grey[200], - // child: const Center(child: Text('场景图')), - //), - const SizedBox(height: 6), - Text(item['title']!), - ], - ); - }, + Widget _buildDiagnosticTable3() { + return Table( + border: TableBorder.all(color: const Color(0xFFE5E9F0), width: 1), + columnWidths: const {0: FixedColumnWidth(180), 1: FixedColumnWidth(180), 2: FixedColumnWidth(220)}, + children: [ + _tableHeader(), + _tableRow("无法原地转弯或直线行走", "其他", "联系销售店", isFirst: true), + _tableRow("", "电机刹车异常", "联系销售商"), + _tableRow("刹车或停车制动异常", "刹车线路异常", "联系销售商", isFirst: true), + _tableRow("", "发动机转速过低", "调高发动机转速"), + ], ); } + + Widget _buildDiagnosticTable4() { + return Table( + border: TableBorder.all(color: const Color(0xFFE5E9F0), width: 1), + columnWidths: const {0: FixedColumnWidth(180), 1: FixedColumnWidth(180), 2: FixedColumnWidth(220)}, + children: [ + _tableHeader(), + _tableRow("割刀不旋转", "安全离合器损坏", "更换安全离合器", isFirst: true), + _tableRow("", "割刀损坏或脱落", "更换"), + _tableRow("作业时异常振动", "转入异物", "清除异物", isFirst: true), + _tableRow("", "草湿度大", "等草干后作业"), + _tableRow("割除的草无法顺利排出", "割草高度过低", "调高割草高度", isFirst: true), + _tableRow("", "发动机转速过低", "调高发动机转速"), + _tableRow("", "作业速度过快", "减慢作业速度"), + _tableRow("", "草过长", "调高割草高度"), + _tableRow("割草有残留", "发动机转速过低", "调高发动机转速", isFirst: true), + _tableRow("", "作业速度过快", "减慢作业速度"), + _tableRow("", "割刀盘护罩内积草过多", "清理积草"), + _tableRow("", "割刀太低", "调高割草高度"), + _tableRow("刀销地面", "地形起伏大", "随地形调整割草高度", isFirst: true), + _tableRow("", "割刀或割刀架弯曲", "更换"), + ], + ); + } + + TableRow _tableHeader() { + return TableRow( + decoration: const BoxDecoration(color: Color(0xFFF7F8FA)), + children: [_tableCellText("问题现象说明", isHeader: true), _tableCellText("原因", isHeader: true), _tableCellText("处理", isHeader: true)], + ); + } + + TableRow _tableRow(String title, String reason, String solution, {bool isFirst = false}) { + return TableRow( + children: [ + _tableCellText(isFirst ? title : "", isHeader: isFirst), + _tableCellText(reason), + _tableCellText(solution), + ], + ); + } + + // ===================== Markdown 内容(完全不变) ===================== + static const String _alert = ''' +## 特别警告 +- 本商品为专业割草机,除割草以外,未经允许,严禁用于其它用途。 +- 本商品禁止在公路、国道等道路上行驶,如果因在道路上行驶而发生的交通事故,我公司概不负责。 +- 请勿对本商品进行改造。另外,为避免事故发生,请勿拆卸零部件,尤其是控制箱盖板和整机防护罩等。容易引起事故发生。 +- 使用遥控功能前,请先开启整机电源,开启遥控器时,必须将遥控器急停旋钮顺时针旋转跳起,长按3秒“开启”遥控器按钮。关闭遥控器时,长按3秒“关闭”遥控器按钮。 +- 如果运行过程中,点击遥控器按钮不起作用时,请长按2秒“开启”遥控器按钮,然后操作即可;如果仍然不起作用,请立即停车,重新启动遥控系统。 +- 本机自带遥控保护系统,因室外作业环境复杂,无线信号易受干扰,当遥控信号受干扰严重或超出遥控范围,机器将自动停止行走和割草;移动位置,确定遥控器通信正常后,重新启动遥控器。 +- 本机自带电池电压显示器,电量或电压过低时(电压低于48V),请及时更换电池或给电池充电;如果长时间不用,每月开启一次查看电压,若低于48V,请及时充电,以免发生过度放电现象,导致电芯损坏。 +- 遥控器使用专用充电电池,如果长时间不用,请取出,并及时充电! +'''; + + static const _alertinstruction = ''' +本商品将附下列警告标签。警告标签特别记载了需要注意的安全事项,使用本商品时必须遵守标签的指示,切勿做任何被禁止的事项。 + +**请看清警告标签的内容。** + +![警告标签](alert1.png) +![警告标签](alert2.png) +![警告标签](alert3.png) +![警告标签](alert4.png) +![警告标签](alert5.png) + +**为方便了解警告标签的内容,请保持标签清洁。警告标签损坏、丢失或判断不清时,请更换新品。根据本手册或事物确认并与销售网点联系** +'''; + + static const String _safety = ''' +安全使用本商品,必须注意防毒、防火、防机器事故发生。必须高度重视,提高警惕,万万不可粗心大意。为确保人身安全,应注意以下注意事项: +- 操作本商品前请务必阅读说明书,注意警告标示。 +- 操作本商品前请务必在开阔地带进行熟悉,避免误操误撞。 +- 作业人员必须带安全服装、防护眼镜、手套、耳塞和安全头盔。 +- 作业时,机器周围不要有其他人作业,防止发生意外事故。 +- 本机器动力用汽油作燃料,为易燃品,应注意防火。严禁在汽油机旁边点火和吸烟。严禁拆解电池等配件。 +- 加油后注意将油箱盖旋紧,如有外漏燃油擦干净,将机器移离加油点的地方再起动。 +- 禁止在汽油机工作状态下添加或倒出燃油。 +- 操作本商品时,双手不要触及消音器、汽缸体避免烫伤,发生意外事故。 +- 禁止急起步、急加速、急转弯和急停车。容易造成操作者被挥起或者车辆打滑、翻倒等事故。 +- 在倾斜路面上时,建议低速行驶,避免造成车辆打滑、翻倒等事故。 +- 本商品传动使用的是皮带,工作状态下必须关闭机器外罩,确保人身安全。 +- 存放前应将油箱内、汽油过滤器内、汽化器内的燃油放干净或消耗完,将机器擦干净,存放在通风、远离烟火的地方。 +- 存放时应放在小孩碰不到的地方,避免发生意外。 +- 禁止使用强酸、强碱等特殊工作液。 +- 工作结束后,操作人员需洗净身体暴露部位,并对各类穿戴衣具进行清洗。 +- 禁止下列人员操作本商品: + 精神疾病患者;醉酒的人;无操作知识的人;未成年人或老人; + 孕妇或哺乳期的妇女;过度疲劳者。 +'''; + + static const String _safetywork = ''' +### 驾驶前须知 +### 请穿好安全服装,戴好安全护具 +驾驶作业时,请穿戴适合作业的服装,不要穿戴背心短裤、拖鞋等轻便服装。并穿好防护鞋、戴好防护眼镜、手套等,做好安全准备。 +长时间作业时,为了减少噪音对人体的伤害,建议操作者佩戴耳塞,防止噪音。 +### 作业前的点检 +驾驶作业前,请做好必要的点检工作。发现异常的地方,请马上补修。另外,驾驶作业前,请检查清理车内堆积的杂草。以防火灾发生。 +### 严禁烟火 +加油、提取燃料时,请远离烟火。加油时,请在确认车辆熄火后进行。发动机保养或电池充电时,严禁靠近烟火。 +### 禁止在公路上行驶 +### 禁止乘坐 +本商品禁止人员乘坐。 +### 禁止鲁莽驾驶 +禁止喝酒、身体不良时作业。另外,请不要让不适合驾驶和作业的人员操作。 +### 确保作业安全(禁止入内) +驾驶作业时,本商品周围(特别是儿童),禁止靠近,至少保持5m的距离。必要时,请在作业地点前,摆放看板写明“割草作业中”、“禁止靠近” 等字样。 +驾驶作业前,请确认好机器状况,无异响、零部件松动等情况,确保工作安全。 +### 禁止在通风不良的地点启动行驶 +在发动机启动时,请必须在换气通风的场所进行。以防止排气中毒。 +### 请距离本商品5米后启动 +请必须在距离车辆5米后启动,以防刮伤。 +### 禁止、急加速、急转弯、急停车 +请不要进行急行、急加速、急转弯,急刹车等危险操作。容易造成车体打滑,翻车等事故。 +### 安全速度的遵守 +前进时,请确认好周围安全,驾驶时请确认好路面状况,以安全速度驾驶。 +### 推荐在坡上操作 +机器在斜坡工作的时候,请在斜坡上方操作。 +### 禁止在机器正下方作业 +机器斜坡工作时,在斜坡下操作一定不要站在机器的正下方。 +### 禁止作业时打开割刀罩 +请不要在作业时打开割刀罩。飞出的小石子等杂物会飞散到周围,造成危险。 +### 注意倾斜路面 +在倾斜路面驾驶时,请选择“低速档”行驶或转弯。否则,容易造成车体打滑,翻车等事故发生。 +### 禁止在急坡度路面使用 +### 注意检查并及时清理机器内部集草 +在恶劣环境或草量的地块割草,要注意机器内部碎草造成的堆积,尤其是排烟部、发动机风扇和发电机内部,及时清理。 +注意:碎草堆积会降低发动机和发电机的通风量,长期不清理会降低发动机和发电机使用效果,缩短机器使用寿命。 +### 注意路面湿滑,造成车体打滑 +### 注意地面障碍物,防止碰撞损坏 +### 注意地面颠簸,造成车体扭曲变形 +### 注意塌方 +请不要在路边、沟边作业。特别是在雨后、地震后,容易引起塌方等事故发生。 +### 停车时的安全确认 +停车时,务必关闭机体和遥控器电源。 +### 危险场所禁止停车 +停车时,请选择在平坦路面。不要在危险处停车。另外,请不要在易燃物附近停车。 +### 倾斜路面停车时,要固定车轮 +请不要在倾斜路面停车,如有迫不得已的情况,需停车时,请把车轮固定好。 +### 使用后的清扫 +使用后,请清除掉车下堆积的杂草等杂物。以防止火灾发生。 +#### 保养检查时请熄火 +保养或检查车辆时,必须在关闭电源后进行。 +### 注意烫伤 +发动机熄火后,各个部位都是高温状态,容易烫伤。请待车辆冷却后再进行保养。 +### 本商品禁止在公路、国道等道路上行驶。 +'''; + + static const String _prepare = ''' +### 发动前检查 +发动前必须进行车体检查,如有异常,须马上处理。 +请将车身上的杂草等杂物清洗干净,以免火灾等事故的发生。 +发动机和发电机空气入口和排气口处堆积过多杂草,会导致发动机过热,车体发生异常等情况。作业前,必须认真检查好发动机和发电机空气入口和排气口处有无异物堆积,如有堆积,请及时清理干净。 +### 燃料的检查和加注,电量的检测和充电 +- 加油时务必远离烟火 +- 加油时,务必在发动机停止状态下进行。 +- 加油时,请注意不要超过油面(给油口面过滤底面),注意不要把油漏到加油口外。如有外漏,请马上擦洗干净。 +- 充电时,要使用标准220V电压,不得违规操作。 +- 充电时,检查周围是否有易燃物品,远离危险场所。 +- 充电时,注意通风。 +- 充电处应放在儿童不易触碰的地方,当心潜在危险。 +- 请检查油量、电量是否正常。 +- 请确认电量表,不足或低于48V时,及时充电。 +- 请确认油量,不足或报警时,打开油盖,及时加油,加满后关闭油盖。 +- 检查机器工作总时间,发动机机油状态是否正常,机油浑浊,及时更换。 +### 建议: +- **使用燃料:汽车用91号以上无铅汽油或乙醇含量不超过10%的无铅汽油(E10)。** +- **油箱容量:10L。** +- **机油:加注汽车用四冲程机油到油尺的游标中间位置,标号根据季节更换。** +- **机油容量** +- **不更换机油滤清器:1.7 L,更换机油滤清器:1.9 L。** +'''; + + static const String _startmethod = ''' +## 警告 +- 启动割草机前必须确认周围安全,退至5m外。 +- 启动发动机时必须在通风环境好的场所进行。避免引起排气中毒事故发生。 +- 启动发动机时必须确认周围安全。 +- 启动发动机时,必须确认处于无石块等异物的平整地块,处于停车状态。避免启动时损坏割刀或石块飞出等,导致使用者或第三者受伤。 +### 行走启动 +- 机器急停按钮顺时针旋转,整机解锁复位。 +-点按机器电源按钮,仪表和指示灯亮。 +- 确认电量 +- 长按遥控器电源按钮,电源按钮亮起,,至遥控器上电源显示灯。 +- 拨动方向摇杆,割草机行驶 +- 长距离行走时须将发动机启动,并将割刀转速提升至最高,防止电量消耗过快。 +'''; + + static const String _work = ''' +## 警告 +- 驾驶时不要靠近周围的人。 +- 出发时必须确认周围安全,注意路面坡度等状况,以安全速度运行。 +- 禁止急发进、急加速、急转弯,避免造成机器打滑、翻倒等事故发生。 +- 在倾斜路面上应低速行驶,否则容易造成机器打滑、翻倒等事故发生。 +- 禁止横穿倾斜路面,容易造成机器打滑或翻车。 +- 禁止在倾斜路面上转弯,容易造成车辆逆转、打滑或翻车。 +- 视线不清或狭窄道路、倾斜、起伏等行驶环境差的路上,请遵从诱导者的指示,做好安全确认后再行驶。 +### 割草启动 +- 确认机器前后左右安全。 +- 确认行驶模式。 +- 确认割刀盘升至最高位置。 +- 确认遥控器正常。 +- 当摁下A键时,A键亮起时左摇杆上拨上拨发动机拨叉开关,注意:发动机点火启动后,立即松开该按钮,每次点火时间不得超过3s,时间过长易损坏发动机,冬季冷机点火困难,可以反复3-5次,中间需停顿5s。 +- 割刀正常旋转,机器声音频率均匀正常,即启动成功。 +- 上下拨动切割高度拨叉开关,将割刀盘调整至所需位置。 +- 当摁下A键时,A键亮起时右摇杆上拨割草电机启动将割刀转速调整至所需转速。 +- 割草机行驶,开始割草。 +### 割草停止 +- 下拨发动机停止拨叉开关,发动机熄火。 +- 注意:等待割刀完全停止旋转后,再靠近机器查看。 +'''; + + static const String _stop = ''' +## 警告 +- 禁止急停车,容易造成机器打滑翻倒。 +- 请在平坦坚硬且没有危险的场所停车;勿在倾斜路面停车,有不得已情况的,必须固定车轮。 +- 请不要靠近易燃易爆物品停车。 +### 割草机停车与关闭 +- 长按割草机电源按钮2s及以上,松开电源键,按钮指示灯闪烁至熄灭,割草机关机。 +- 特别紧急情况下,按下遥控器上B按钮,割草机停车,此情况会造成部分数据丢失。 +- 长按遥控器电源开关,直至显示屏熄灭,遥控器关机。 +- 注意:长时间停放车辆时需要选择水平的地面,避免车头向下超过20°。 +- 注意:若长时间不使用,请至少每月一次给割草机充电,间隔不大于30个自然日。 +'''; + + static const String _controluse = ''' +## 警告 +- 非专业人员请勿拆解遥控器。 +- 遥控器长时间不使用,请将电池充满电。 + +### 遥控器 +![这是图片](control.png) +- 1.2.4G 3dB天线 +- 2.USB1/图像输出 +- 3.拨动三档开关E +- 4.拨 轮 C +- 5.拨 轮 C +- 6.电量指示灯① +- 7.按键 A +- 8.开关键 +- 9.按键B +- 10.右摇杆×2、Y2 +- 11.拨 轮 D +- 12.拨动三档开关F +- 13.USB2/充电 +### 遥控器电源 +![这是遥控器电源图片](controlbattery.png) +| 闪灯方式 | |电量 | +| ---- | ---- |---- | +| ●●●● | | 76%~100% | +| ●●●○ | |51%~75% | +| ●●○○ | | 26%~50% | +| ●○○○ | | 1%~25% | + +### 操作割草机行走 +![这是遥控器电源图片](operationwalk1.png) +左摇杆控制割草机前进 +上推前进-下推后退 + +![这是遥控器电源图片](operationwalk2.png) +右摇杆控制机器左右旋转 +左推左转-右推右转 + +### 急停按钮 +![这是遥控器电源图片](stopbutton.png) +当按下B键时B键亮起,机器停止运行,发动机熄火。 +### 底盘升降 +![这是遥控器电源图片](dipan.png) +上拨抬高割刀,下拨降低割刀,中间位置高度保持不变,拨杆需要手动回中。 +### 发动机启停 +![这是遥控器电源图片](fadongji.png) +当摁下A键时,A键亮起时左摇杆上拨发动机点火,下拨发动机熄火,拨杆自动回中。 + +**注:发动机点火启动后,立即松开该按钮,每次点火时间不得超过3s,时间过长易损坏发动机,冬季冷机点火困难,可以反复3-5次,中间需停顿3s** +### 割刀转速调整 +![这是遥控器电源图片](adjuctvec.png) +当摁下A键时,A键亮起时右摇杆上拨提高割刀转速,下拨降低割刀转速,中间位置保持不变,拨杆自动回中。 + +### 模式切换 +![这是遥控器电源图片](modelchange.png) +拨挡在上拨档时为远程遥控模式 +拨挡在中间档时为蓝牙遥控模式 +拨挡在下拨档时为本地遥控模式 + +**操作步骤** +- 上拨“切割高度”抬高割刀至最高处,松开该拨扭。 +- 上拨“发动机”拨杆,点火发动机,点火成功后立即松开。 +- 根据工作需要调节油门大小、割刀高度、方向遥杆等。 +- 工作结束,下拨“发动机”拨杆,发动机熄火,长按“电源按钮”关闭遥控器,所有开关回归零位。 +**注意:遥控有效距离:无干扰情况下200米。** +'''; + + static const String _about1 = ''' +**注意:**对本商品进行维修或零件更换时,请务必使用本公司的正牌零件。如使用非本公司零件,本公司将不对商品进行保修等服务。 +| 项目 | 更换时间| 类型 | 三包期限 | +| ---- | ---- |---- |---- | +| 发动机 | 发现不良时更换 | 关键零部件 | 1年 | +| 发电机 | 发现不良时更换 | 关键零部件 | 1年 | +| 控制器 | 发现不良时更换 | 关键零部件 | 1年 | +| 电机 | 发现不良时更换 | 关键零部件 | 1年 | +| 减速机 | 发现不良时更换 | 关键零部件 | 1年 | +| 驱动器 | 发现不良时更换 | 关键零部件 | 1年 | +| 遥控器 | 发现不良时更换 | 关键零部件 | 1年 | +| V形皮带 | 发现不良时更换 | 易耗橡胶件 | 3个月 | +| 轮胎/履带 | 发现不良时更换 | 易耗橡胶件 | 3个月 | +| 割刀 | 发现不良时更换 | 易耗金属件 | 3个月 | +| 升降导套 | 发现不良时更换 | 易耗尼龙件 | 3个月 | +'''; + + static const String _about2 = ''' +如果在使用过程中发生问题、或者有疑问以及对于售后服务的要求,请直接与销售店或本公司售后服务中心联系。联系时请告知型号标签上的制造号码、发动机品牌及型号等相关商品信息。配置的发动机品牌名称及型号名称,请参照说明书的〖技术参数〗。 +'''; + + static const String _breakdown1 = ''' +**注意** +- 本商品发生问题时,请停止使用。参照下列的问题诊断表来进行适当的处理。若发生下列问题诊断表没有记载的问题,或根据处理方法页没有解决问题的情况下,请直接与销售网点联系。 +- 下列的处理内容中也包括很多专门知识,以及指定的专门工具、仪器等,若顾客无法个人处理,请联系销售网点 + +### 发动机 +'''; + + static const String _check1 = ''' +### 发动机的检查 +#### 日常检查 +- 燃料的检查 +- 发动机机油的检查 +- 各部螺丝松紧的检查 +- 异常振动、异常声音 +- 电控系统的检查 +- 风门、油门开关转轴动作的检查 + +#### 定期检查 +| 项目 | 作业额度 | +| ---- | ---- | +| 空气滤清器检查 | 每日2小时 | +| 空气滤清器的清洁 | 每6个月或100小时 | +| 空气滤清器滤芯的更换 | 每2年或每500小时 | +| 各部的清扫及松紧的检查 | 每日8小时 | +| 发动机油检查、补给 | 每日8小时 | +| 发动机油的交换 | 初次为20小时,以后为每100小时 | +| 火花塞的清扫 | 每 50小时 | +| 燃料过滤器的清扫 | 每200小时 | +| 火花塞间隙的清扫调整 | 每200小时 | +| 燃料管的更换 | 每2年 | +| 发电机检查 | 每日2小时 | +| 发电机的清洁 | 每日8小时 | +| 电池的检查、补给 | 每日8小时 | +| 大修 | 每1000小时 | +'''; + + static const String _check2 = ''' +**注意** +- 涉及拆卸及安装部件时,注意不要弄伤手指。 +- 因检查及作业需要打开或拆卸时,检查结束后必须还原。 +'''; + + static const String _check4 = ''' +**注意** +对本商品进行维修或零件更换时,请勿必使用本公司的正牌零件。如使用非本公司零件,本公司将可能不对商品进行保修等服务。 +| 项目 |更换时间 | 类型 | 三包期 | +| ---- | ---- |---- |---- | +| V形皮带 | 发现不良时更换 | 橡胶件 | 3个月 | +| 轮胎/履带 | 发现不良时更换 | 橡胶件 | 3个月 | +| 割刀 | 发现不良时更换 | 金属件 | 3个月 | +| 升降导套 | 发现不良时更换 | 尼龙件 | 3个月 | + +**建议:** +V形皮带用满100小时后,最好更换新的。 +轮带/履带因外力导致漏气、断裂等不属于保修范围。 +'''; + + static const String _check5 = ''' +**警告** +- 维修,保养时必须停止发动机, +- 发动机停止后一段时间内,发动机各部及机油出于高温状态时,避免烫伤,请冷却后再维修,保养。 + +**发动机机油的检查补给、更换** +- 根据国家法律规定处理废油。 +- 如不及时补油,发动机将会产生故障,因此,请及时补充制定的机油。 + +**建议:** + 请在发动机启动前,或熄火十分钟之后检测油量。因为发动机熄火时,车内各部还残留有机油,无法正常的检测油量。 + + ![这是图片](check1.png) + ![这是图片](check2.png) + +检查: + +1)将车辆停放在平坦的路面。 + +2)取下给油塞(如右图所示)。 + +3)检查机油塞尺。 + +4)机油不足时,补充机油。 + +5)试装机油塞尺,机油位处于塞尺中部。 + +6)装上给油塞。 + +![这是图片](check3.png) +![这是图片](check4.png) +机油更换或更换机油过滤器 + +1)准备装机油的容器。 + +2)把机油排油塞取下,排出机油。 + +3)更换机油过滤器(如右图所示)。 + +4)安装机油排油塞,灌入新机油。 + +5)整机试运行5min。 +![这是图片](check5.png) +![这是图片](check6.png) +![这是图片](check7.png) +**注意:请割草后,每天检查空气过滤器。过滤器过脏,容易引起发动机故障、输出动力不足、寿命降低等情况发生。** + +1)打开空气过滤器外壳卡扣。 + +2)打开外壳,拿出空气过滤器,从滤芯支架上松开两个弹簧片,从支架上拆下泡沫滤芯,拆下纸质滤芯。 + +3)检查两个滤芯,如果损坏则更换。始终按计划的时间间隔更换纸质滤芯。 + +4)如果要重复使用,请清洁滤清器元件。纸质滤芯:在硬质表面上轻敲滤芯数次来清除污垢,或通过滤芯从清洁的面向发动机的一面吹压缩空气 [不超过207 kPa (2.1 kgf/cm2, 30 psi)] 。切勿试图刷掉污垢; 刷洗会迫使污垢进入纤维。 如果纸质滤芯太脏了,请更换。 +泡沫滤芯:用温肥皂水清洗,冲洗干净,彻底干燥。 或用不易燃的溶剂清洗并晾干。将滤芯浸入干净的机油中,然后挤出多余的油。 如果泡沫中残留的油过多,发动机在启动时会冒烟。 + +5)用湿抹布擦去空气滤清器主体和盖子内部的污垢。小心操作以防止灰尘进入化油器的气室。 + +6)重新安装纸质滤芯,将泡沫滤芯放在滤芯支架上,然后重新安装空气滤清器外壳上的滤芯支架。紧紧地钩住两个弹簧片。 + +7)用手牢牢锁定空气滤清器盖锁。 +![这是图片](check8.png) +![这是图片](check9.png) +**注意:向外拔出火花塞时,请握住火花塞盖取下。用力拽线容易扯断软线。松动的火花塞会过热并损坏发动机。过度拧紧火花塞会损坏气缸盖中的螺纹。** + +1)断开火花塞盖,清除火花塞区域周围的污垢。 + +2)用 5/8 英寸火花塞扳手拆下火花塞。 + +3)检查火花塞: 如果损坏、严重结垢、密封垫圈状况不佳,或电极磨损,请更换。 + +4)用线型塞尺测量火花塞电极间隙测量。 如有必要,小心弯曲侧电极来纠正间隙。间隙应为:0.7-0.8 毫米。 + +5)用手小心地安装火花塞,以避免交叉螺纹。 + +6)火花塞装好后,用5/8英寸火花塞拧紧扳手压缩密封垫圈。安装新火花塞时,拧紧1/2圈以压缩垫圈。重新安装原厂火花塞时,拧紧1/8-1/4圈以压缩垫圈。 + +扭矩:18.0 N•m (1.8 kgf•m, 13 Ibf•ft) +推荐火花塞:ZER5F (NGK)或FR2A (NGK) +'''; + + static const String _check6 = ''' +**警告** +- 保养,维修时必须停止发动机并且确认刀盘停转。 +- 发动机停止一段时间内,各部或发动机本身出于高温时,为避免烫伤,请待冷却后再保养维修。 + +因橡胶固有特性,使用一段时间后会松弛,需要注意根据使用情况适当张紧,否则容易出现脱带情况。 +'''; + + static const String _check7 = ''' +**注意** + +- 切勿用水清洗发动机和底盘,避免浸水导致电路故障或生锈。 +- 坚硬的粘着物容易引起故障,请清除干净。 +- 如因坚硬的粘着物而不能运行时,请勿强行操作。 + +**通常使用后的维修及保养** +- 使用后及时清除粘着物的草或泥等杂物。 +- 请在水泥地等坚硬干燥地面驻车。 +- 请在室内存放。 + +**长期的保管方法** + +**警告** + +勿在烟火处保管,避免火灾。 +- 请依照〖停车方法〗的顺序停车。 +- 清除粘着的草和泥等杂物。 +- 对紧固件和已锈蚀的部位应涂黄油,进行防锈处理。 +- 每个月充满电一次,将有助于延长电池的使用寿命。 + +请待发动机冷却后,排空油箱和化油器,整机盖上防水罩,水平存放在阴凉干燥的地方保管。将汽油过滤器处固定卡箍去掉。燃油管路从过滤器处拔出,将燃油箱中的油排空到认可的汽油容器中。如果燃油箱配有阀门,将燃油阀转到OPEN或ON位置以启用排空。排空完成后,可启动发动机至自然熄火以消耗残余的汽油,重新连接燃油管路。松开化油器放油螺钉,将化油器中的油排空到认可的汽油容器中。 排空完成后,拧紧化油器放油螺钉。 + +![这是图片](check0.png) + +- 如果您的发动机在油箱和化油器中存放汽油,那么降低汽油蒸汽着火的风险是非常重要的。选择通风良好的,远离任何带火焰的设备的存储区域,如炉子、热水器或烘干机。还要避开任何产生火花的电动机的区域,或操作电动工具的区域。 +- 如果可能,请避开高湿度的存储区域,因为那样会促进生锈和腐蚀。 +- 除非所有燃料已从燃油箱中排出,否则将燃油阀保持在CLOSED或OFF位置以减少燃油泄漏的可能性。 +- 在发动机和排气系统冷却后,盖上发动机以防止灰尘进入。高温发动机和排气系统会点燃或熔化一些材料。 +- 请勿使用塑料片作为防尘罩。 +- 无孔盖会使机器不易蒸发水分,促进生锈和腐蚀。 +'''; + + static const String _starpoint = ''' +**警告** +- 请把货车停放在平坦路面,必须固定前轮。 +- 作业过程中请不要让人靠近车辆及渡板。 +- 渡板要很强的强度,可承受机械重量和负载的重量。宽度比履带/轮胎宽2倍以上。长要比货车或台面高4倍,并要做好防滑处理。 +- 确定渡板的挂钩挂在货台上台和货台没有断层和错位。 +- 请缓速前进,最好采用MT模式,装车。 +- 请不要在渡板上转弯,容易坠车。 +- 在运输前,确定把车体固定在货车的货台上。 + ![这是遥控器电源图片](starpoint1.png) +![这是遥控器电源图片](starpoint2.png) +- 把货车停放在平坦路面,固定车轮。 +- 确定渡板的挂钩挂在货台上台和货台没有断层和错位 +- 请缓速前进、装车。 +- 根据〖停车方法〗的顺序停车,并用钢丝或绳索将车辆固定在货车货台上。 +'''; } diff --git a/lib/features/home/presentation/pages/usage.dart b/lib/features/home/presentation/pages/usage.dart index cc3dd773..c9744db8 100644 --- a/lib/features/home/presentation/pages/usage.dart +++ b/lib/features/home/presentation/pages/usage.dart @@ -1,1012 +1,448 @@ import 'package:flutter/material.dart'; -import 'package:flutter_markdown/flutter_markdown.dart'; -class ManualPage extends StatefulWidget { - const ManualPage({super.key}); +class ProductPage extends StatefulWidget { + const ProductPage({super.key}); @override - State createState() => _ManualPageState(); + State createState() => _ProductPageState(); } -class _ManualPageState extends State { - int _selectedIndex = 0; - bool showMenu = true; - String currentType = ''; +class _ProductPageState extends State { + // 当前显示内容:0=主菜单 1=产品亮点 2=功能介绍 3=产品参数 4=应用场景 + int currentPage = 0; - // 菜单标题 - final List menuTitles = const ['安全警示及使用注意事项', '机器使用说明', '保养与维修', '故障处置', '本商品搬运的要领', '关于三包与售后服务']; - - // 子菜单 - final List>> subMenus = [ - // 1. 安全警示 - [ - {'title': '特别警告', 'type': 'alert'}, - {'title': '关于本产品的警告标签说明', 'type': 'alertinstruction'}, - {'title': '安全操作须知', 'type': 'safety'}, - {'title': '安全驾驶·安全作业须知', 'type': 'safetywork'}, - ], - // 2. 机器使用 - [ - {'title': '发动前的准备', 'type': 'prepare'}, - {'title': '启动方法', 'type': 'startmethod'}, - {'title': '割草方法', 'type': 'work'}, - {'title': '停车方法', 'type': 'stop'}, - {'title': '遥控器使用', 'type': 'controluse'}, - ], - // 3. 保养与维修 - [ - {'title': '定期检查表', 'type': 'check1'}, - {'title': '行走部分及割草部分的检查', 'type': 'check2'}, - {'title': '加油、加水以及上润滑脂、润滑油一览表', 'type': 'supply'}, - {'title': '消耗零件(更换零件)一览表', 'type': 'check4'}, - {'title': '发动机', 'type': 'check5'}, - {'title': '行走装置', 'type': 'check6'}, - {'title': '使用后的维修', 'type': 'check7'}, - ], - // 4. 故障处置 - [ - {'title': '问题诊断表', 'type': 'breakdown1'}, - ], - // 5. 搬运 - [ - {'title': '搬运要领', 'type': 'starpoint'}, - ], - // 6. 三包售后 - [ - {'title': '关于三包', 'type': 'about1'}, - {'title': '关于售后服务', 'type': 'about2'}, - {'title': '关于零件的补给年限(期间)', 'type': 'supplyyear'}, - ], + // 功能介绍列表 + final List funcList = const [ + '两轮驱动履带式行走系统,超强地形适应能力,无极变速,轻松爬坡越障,履带爬坡角度≤35°,履带前仰角40°,垂直越障≤15cm。', + '3kW闭环无刷电机独立驱动行走系统,高速传动装置效率达到95%以上,整机扭矩达到175N·m,轻松爬坡越障。闭环车速控制和检测系统,0-4km/h无级变速。', + '坦克履型设计,接近角达到45°,超强地形适应能力,爬坡角度≤40°,垂直越障≤15cm;复合材料履带,抗拉强度高、抗切能力好,抗磨损;接地比压小,轻松通过烂泥沼泽地。', + '方向速度手动操作模式(MT)和方向速度自动操作模式(AT)满足不同操作者使用习惯和场景使用方式。', + '自主研发自适应增程系统,根据负载变化调整输出功率,节省能耗,尖峰抑制稳流系统,实现稳定电力输出配备大功率风冷发电机和过滤系统,可实现大功率交直流放电,满足长时间使用要求。', + '户外等级控制箱,操作面板集中布置,防护等级IP55,操作、故障排査信息和注意事项醒目张贴,方便操作和检修。', + '工业级遥控器,防护等级IP65,有跌落防误碰保护;标准433MHz波段,无需无线电备案,直接使用;遥控信号绕障和穿越能力强,抗干扰能力强,同一空间至少支持100台机器同时作业,遥控距离达到500m;锂离子充电电池,可充可换,满足各种需要。', + '整机三色灯显示机器各种状态,包括油量预警、电量预警、直行保持、电控箱温度预警和安全倾角预警等;遥控实现整机操控,包括发动机一键启停、行走操控、速度操控、割盘升降和割刀转速等;遥控显示屏实时显示作业状态,包括作业时间、保养提醒、驱动器情况、作业模式、行驶模式、安全倾角检测、障碍物检测车灯状态、信号强度和遥控器电量等。', ]; - // 展开状态 —— 修复:使用late初始化,在initState中赋值 - late List expandedList; + // 产品亮点 + final List> starPoints = const [ + {'title': '整机设计', 'content': '承载式车身、高效大功率行走系统、坦克履型、油电混动、防溜坡系统、主被动溜坡浮动式刀盘、空气辅助式提升机构、自适应割草装置'}, + {'title': '控制系统', 'content': '车规级控制和电气系统、工业级防干扰遥控系统、车速控制和检测系统、牵引力控制系统、手动和自动行驶操作模式、整机状态液晶显示。'}, + {'title': '动力系统', 'content': '自适应增程系统、本田顶级发动机、大功率交直流放电功能。'}, + {'title': '安全配置', 'content': '车身稳定系统、ABS刹车装置、电子防翻滚功能、倾斜保护功能、急速、坠落和翻滚停机功能、无操作自动关机。'}, + {'title': '智能功能', 'content': '直行保持功能、防碰撞功能、碰撞停机功能。'}, + {'title': '扩展功能', 'content': '路径规划、巡检探测、物联控制。'}, + ]; - @override - void initState() { - super.initState(); - // 初始化菜单展开状态 - expandedList = List.filled(menuTitles.length, false); - } + // 应用场景 + final List> sceneList = const [ + {'img': 'assets/images/scene4.png', 'title': '果园林业'}, + {'img': 'assets/images/scene1.png', 'title': '光伏储能'}, + {'img': 'assets/images/scene2.png', 'title': '公路路政'}, + {'img': 'assets/images/scene3.png', 'title': '农业生产'}, + {'img': 'assets/images/scene5.png', 'title': '市政河堤'}, + {'img': 'assets/images/scene6.png', 'title': '机场场所'}, + ]; - // Markdown 内容映射 - final Map markdownMap = { - 'alert': _alert, - 'alertinstruction': _alertinstruction, - 'safety': _safety, - 'safetywork': _safetywork, - 'prepare': _prepare, - 'startmethod': _startmethod, - 'work': _work, - 'stop': _stop, - 'controluse': _controluse, - 'about1': _about1, - 'about2': _about2, - 'breakdown1': _breakdown1, - 'check1': _check1, - 'check2': _check2, - 'check4': _check4, - 'check5': _check5, - 'check6': _check6, - 'check7': _check7, - 'starpoint': _starpoint, - }; + // 产品参数 markdown + final String productParamMd = ''' +# 整车信息 +| 项目 | 单位 | MC700 | +| ---- | ---- | ---- | +| 外形尺寸(长×宽×高) | mm | 1429×1090×650 | +| 车体重量 | kg | 320 | +| 工作效率 | m²/h | 2500¹ | +| 最低离地高度 | mm | 90 | +| 续航能力(纯电) | h | 0.5 | +| 水平运动额定负载 | kg | 500 | +| 动力源 | | 混合动力 | +| 整机显示信息 | | 电量、电压、温度 | +| 遥控器显示信息 | | 电量、失联报警 | +| 电池品牌 | | 理士 | +| 电芯成分 | | SLA(密封铅酸可充电电池) | +| 电池容量(20小时率) | Ah/hr | 23 | +| 低电量报警 | | 显示屏和三色灯 | +| 增程器 | | 自适应 | +| 发电机保护 | | 过滤网 | +| 外放电源 | V/W | 24/480(直流) | +| 外放电源接口 | | 点烟器 | +| 按钮 | | 304不锈钢带灯 | +| 箱内电气 | | 防震端子 | +| 箱外电气 | | 车规级线束 | +| 防护等级 | | IP55 | + +# 控制系统 +| 项目 | 单位 | MC700 | +| ---- | ---- | ---- | +| 控制器 | | ECU | +| 遥控器 | | 工业级数显屏 | +| 遥控距离 | m | ≤500 | +| 遥控信号 | MHz | 433 | +| 通信频率 | Hz | 10 | +| 发动机维护提醒 | | 屏幕图标提醒 | +| 自动驻车 | kg | 有 | +| 坡道辅助起步 | | 有 | +| 车身倾斜检测| | 有 | +| 车速检测系统 | | 有 | +| ABS刹车系统 | | 有 | +| 电子防御滚系统 | | 有 | +| 牵引力控制系统| | 有 | +| 车身稳定系统| | 有 | +| 抗干扰 || 百台设备互不干扰 | +| 传感器安装预留 | |LIDAR/CPS/RIDAR | +| 防护等级| |车规级ip65 | +'''; @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: Colors.white, + backgroundColor: const Color(0xFFF7F8FA), // 全局背景色 body: Column( children: [ _buildHeader(), - Expanded(child: showMenu ? _buildMenu() : _buildContent()), + Expanded(child: _buildContent()), ], ), ); } - // 顶部标题栏 Widget _buildHeader() { + String title = '产品介绍'; + if (currentPage == 1) title = '产品亮点'; + if (currentPage == 2) title = '功能介绍'; + if (currentPage == 3) title = '产品参数'; + if (currentPage == 4) title = '应用场景'; + return Container( - padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16), + padding: EdgeInsets.only(top: MediaQuery.of(context).padding.top + 8, bottom: 12, left: 4, right: 4), + decoration: const BoxDecoration( + color: Colors.white, + boxShadow: [BoxShadow(color: Colors.black12, blurRadius: 4, offset: Offset(0, 2))], + ), child: Row( children: [ - //IconButton( - // onPressed: () { - // if (!showMenu) { - // setState(() => showMenu = true); - // } else { - // Navigator.pop(context); - // } - // }, - // icon: const Icon(Icons.arrow_back_ios, size: 16), - //), - const SizedBox(width: 48), + if (currentPage != 0) + IconButton( + onPressed: () => setState(() => currentPage = 0), + icon: const Icon(Icons.arrow_back_ios, size: 18, color: Color(0xFF333333)), + ), Expanded( child: Text( - showMenu ? '使用说明' : _getCurrentTitle(), + title, textAlign: TextAlign.center, - style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w500), + style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w600, color: Color(0xFF333333)), ), ), - const SizedBox(width: 48), + if (currentPage != 0) const SizedBox(width: 48), ], ), ); } - // 菜单列表 - Widget _buildMenu() { - return ListView(padding: const EdgeInsets.symmetric(horizontal: 16), children: [for (int i = 0; i < menuTitles.length; i++) _buildMenuItem(i)]); + Widget _buildContent() { + switch (currentPage) { + case 1: + return _buildStarPoint(); + case 2: + return _buildFunction(); + case 3: + return _buildParam(); + case 4: + return _buildScene(); + default: + return _buildMainMenu(); + } } - // 单个菜单项目 - Widget _buildMenuItem(int index) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, + // 主菜单(卡片样式) + Widget _buildMainMenu() { + return ListView( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), children: [ - InkWell( - onTap: () { - setState(() { - expandedList[index] = !expandedList[index]; - }); - }, - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 12), - child: Row( - children: [ - const Icon(Icons.description, size: 20, color: Colors.grey), - const SizedBox(width: 8), - Expanded(child: Text(menuTitles[index])), - Icon(expandedList[index] ? Icons.keyboard_arrow_up : Icons.keyboard_arrow_down, color: Colors.grey), - ], - ), - ), - ), - if (expandedList[index]) - Padding( - padding: const EdgeInsets.only(left: 20), - child: Column( - children: subMenus[index].map((item) { - return InkWell( - onTap: () { - setState(() { - showMenu = false; - _selectedIndex = index; - currentType = item['type']; - }); - }, - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 10), - child: Row(children: [const SizedBox(width: 8), Text(item['title'])]), - ), - ); - }).toList(), - ), - ), - const Divider(height: 1), + _menuItem('产品亮点', Icons.highlight_outlined, 1), + _menuItem('功能介绍', Icons.widgets_outlined, 2), + _menuItem('产品参数', Icons.table_chart_outlined, 3), + _menuItem('应用场景', Icons.place_outlined, 4), ], ); } - // 内容页面 - Widget _buildContent() { - return SingleChildScrollView(padding: const EdgeInsets.all(16), child: _getContentWidget()); - } - - // 根据类型获取内容组件 - Widget _getContentWidget() { - if (currentType == 'supply') { - return _buildSupplyTable(); - } else if (currentType == 'breakdown1') { - return SingleChildScrollView( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, // 关键:避免Column无限高度 - children: [ - MarkdownBody( - data: _breakdown1, - styleSheet: MarkdownStyleSheet( - p: const TextStyle(fontSize: 15, height: 1.5), - h3: const TextStyle(fontSize: 17, fontWeight: FontWeight.bold), - ), - ), - const SizedBox(height: 12), - // 发动机表格(横向滚动) - SizedBox( - width: double.infinity, - child: SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: SizedBox( - width: MediaQuery.of(context).size.width * 1.8, // 固定表格宽度,避免布局崩溃 - child: _buildDiagnosticTable1(), - ), - ), - ), - const SizedBox(height: 20), - const Text("发电机", style: TextStyle(fontSize: 17, fontWeight: FontWeight.bold)), - const SizedBox(height: 8), - _buildDiagnosticTable2(), - const SizedBox(height: 20), - const Text("行走装置", style: TextStyle(fontSize: 17, fontWeight: FontWeight.bold)), - const SizedBox(height: 8), - _buildDiagnosticTable3(), - const SizedBox(height: 20), - const Text("割草装置", style: TextStyle(fontSize: 17, fontWeight: FontWeight.bold)), - const SizedBox(height: 8), - _buildDiagnosticTable4(), - const SizedBox(height: 30), - ], - ), - ); - } else if (currentType == 'supplyyear') { - return const Padding( - padding: EdgeInsets.all(16.0), - child: Text('本商品单个零件的提供年限为停止生产后三年。', style: TextStyle(fontSize: 16)), - ); - } else if (markdownMap.containsKey(currentType)) { - return SingleChildScrollView( - padding: const EdgeInsets.all(16), - child: MarkdownBody( - data: markdownMap[currentType]!, - styleSheet: MarkdownStyleSheet( - p: const TextStyle(fontSize: 15, height: 1.5), - h2: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold), - h3: const TextStyle(fontSize: 17, fontWeight: FontWeight.bold), + Widget _menuItem(String title, IconData icon, int page) { + return Container( + margin: const EdgeInsets.only(bottom: 10), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 6, offset: const Offset(0, 2))], + ), + child: InkWell( + borderRadius: BorderRadius.circular(12), + onTap: () => setState(() => currentPage = page), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), + child: Row( + children: [ + Icon(icon, size: 24, color: const Color(0xFF4A90E2)), + const SizedBox(width: 12), + Text(title, style: const TextStyle(fontSize: 16, color: Color(0xFF333333))), + const Spacer(), + const Icon(Icons.arrow_forward_ios, size: 14, color: Colors.grey), + ], ), - imageBuilder: (uri, title, alt) { - return Padding( - padding: const EdgeInsets.symmetric(vertical: 6), - child: Image.asset("assets/images/$uri", fit: BoxFit.contain, width: double.infinity), - ); - }, ), - ); - } else { - return const Center(child: Text("暂无内容", style: TextStyle(fontSize: 16))); - } + ), + ); } - // 获取当前标题 - String _getCurrentTitle() { - for (var list in subMenus) { - for (var item in list) { - if (item['type'] == currentType) { - return item['title']; - } - } - } - return '详情'; + // 产品亮点(卡片+主题色) + Widget _buildStarPoint() { + return ListView( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + children: [ + ...starPoints.map((item) { + return Container( + margin: const EdgeInsets.only(bottom: 10), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [BoxShadow(color: Colors.black12, blurRadius: 4)], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const Icon(Icons.star_rounded, color: Color(0xFF4A90E2), size: 20), + const SizedBox(width: 6), + Text(item['title']!, style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w600)), + ], + ), + const SizedBox(height: 6), + Text(item['content']!, style: const TextStyle(color: Color(0xFF666666), height: 1.4)), + ], + ), + ); + }), + const SizedBox(height: 16), + ClipRRect(borderRadius: BorderRadius.circular(12), child: Image.asset('assets/images/startpoint.png')), + const SizedBox(height: 20), + ], + ); } - // 补给表格 - // 补给表格(HTML 转 Flutter 原生表格) - Widget _buildSupplyTable() { + // 功能介绍(卡片+项目符号) + Widget _buildFunction() { + return ListView( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + children: [ + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [BoxShadow(color: Colors.black12, blurRadius: 4)], + ), + child: Column( + children: [ + ...funcList.map((text) { + return Padding( + padding: const EdgeInsets.only(bottom: 10), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text('• ', style: TextStyle(color: Color(0xFF4A90E2), fontSize: 16)), + Expanded( + child: Text(text, style: const TextStyle(color: Color(0xFF444444), height: 1.45)), + ), + ], + ), + ); + }), + ], + ), + ), + const SizedBox(height: 20), + ], + ); + } + + // 产品参数(优化表格样式) + Widget _buildParam() { return SingleChildScrollView( - scrollDirection: Axis.horizontal, + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - const Text('加油、加水以及上润滑脂、润滑油一览表', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold)), - const SizedBox(height: 12), - // 原生 Flutter 表格 - Table( - border: TableBorder.all(color: Colors.grey.shade300, width: 1), - columnWidths: const {0: FixedColumnWidth(80), 1: FixedColumnWidth(180), 2: FixedColumnWidth(280), 3: FixedColumnWidth(80)}, + const Text( + ' 整车信息', + style: TextStyle(fontSize: 17, fontWeight: FontWeight.w600, color: Color(0xFF333333)), + ), + const SizedBox(height: 8), + _buildVehicleInfoTable(), + const SizedBox(height: 20), + const Text( + ' 控制系统', + style: TextStyle(fontSize: 17, fontWeight: FontWeight.w600, color: Color(0xFF333333)), + ), + const SizedBox(height: 8), + _buildControlSystemTable(), + const SizedBox(height: 30), + ], + ), + ); + } + + Widget _buildVehicleInfoTable() { + return SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + boxShadow: [BoxShadow(color: Colors.black12, blurRadius: 4)], + ), + child: Table( + border: TableBorder.all(color: Colors.grey.shade200, width: 1), + columnWidths: const {0: FixedColumnWidth(200), 1: FixedColumnWidth(80), 2: FixedColumnWidth(160)}, + children: [ + TableRow( + decoration: BoxDecoration(color: Colors.grey.shade50), + children: const [ + Padding( + padding: EdgeInsets.all(10), + child: Text('项目', style: TextStyle(fontWeight: FontWeight.w600)), + ), + Padding( + padding: EdgeInsets.all(10), + child: Text('单位', style: TextStyle(fontWeight: FontWeight.w600)), + ), + Padding( + padding: EdgeInsets.all(10), + child: Text('MC700', style: TextStyle(fontWeight: FontWeight.w600)), + ), + ], + ), + ...[ + _buildTableRow('外形尺寸(长×宽×高)', 'mm', '1429×1090×650'), + _buildTableRow('车体重量', 'kg', '320'), + _buildTableRow('工作效率', 'm²/h', '2500¹'), + _buildTableRow('最低离地高度', 'mm', '90'), + _buildTableRow('续航能力(纯电)', 'h', '0.5'), + _buildTableRow('水平运动额定负载', 'kg', '500'), + _buildTableRow('动力源', '', '混合动力'), + _buildTableRow('整机显示信息', '', '电量、电压、温度'), + _buildTableRow('遥控器显示信息', '', '电量、失联报警'), + _buildTableRow('电池品牌', '', '理士'), + _buildTableRow('电芯成分', '', 'SLA(密封铅酸可充电电池)'), + _buildTableRow('电池容量(20小时率)', 'Ah/hr', '23'), + _buildTableRow('低电量报警', '', '显示屏和三色灯'), + _buildTableRow('增程器', '', '自适应'), + _buildTableRow('发电机保护', '', '过滤网'), + _buildTableRow('外放电源', 'V/W', '24/480(直流)'), + _buildTableRow('外放电源接口', '', '点烟器'), + _buildTableRow('按钮', '', '304不锈钢带灯'), + _buildTableRow('箱内电气', '', '防震端子'), + _buildTableRow('箱外电气', '', '车规级线束'), + _buildTableRow('防护等级', '', 'IP55'), + ], + ], + ), + ), + ); + } + + Widget _buildControlSystemTable() { + return SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + boxShadow: [BoxShadow(color: Colors.black12, blurRadius: 4)], + ), + child: Table( + border: TableBorder.all(color: Colors.grey.shade200, width: 1), + columnWidths: const {0: FixedColumnWidth(200), 1: FixedColumnWidth(80), 2: FixedColumnWidth(160)}, + children: [ + TableRow( + decoration: BoxDecoration(color: Colors.grey.shade50), + children: const [ + Padding( + padding: EdgeInsets.all(10), + child: Text('项目', style: TextStyle(fontWeight: FontWeight.w600)), + ), + Padding( + padding: EdgeInsets.all(10), + child: Text('单位', style: TextStyle(fontWeight: FontWeight.w600)), + ), + Padding( + padding: EdgeInsets.all(10), + child: Text('MC700', style: TextStyle(fontWeight: FontWeight.w600)), + ), + ], + ), + ...[ + _buildTableRow('控制器', '', 'ECU'), + _buildTableRow('遥控器', '', '工业级数显屏'), + _buildTableRow('遥控距离', 'm', '≤500'), + _buildTableRow('遥控信号', 'MHz', '433'), + _buildTableRow('通信频率', 'Hz', '10'), + _buildTableRow('发动机维护提醒', '', '屏幕图标提醒'), + _buildTableRow('自动驻车', 'kg', '有'), + _buildTableRow('坡道辅助起步', '', '有'), + _buildTableRow('车身倾斜检测', '', '有'), + _buildTableRow('车速检测系统', '', '有'), + _buildTableRow('ABS刹车系统', '', '有'), + _buildTableRow('电子防御滚系统', '', '有'), + _buildTableRow('牵引力控制系统', '', '有'), + _buildTableRow('车身稳定系统', '', '有'), + _buildTableRow('抗干扰', '', '百台设备互不干扰'), + _buildTableRow('传感器安装预留', '', 'LIDAR/CPS/RIDAR'), + _buildTableRow('防护等级', '', '车规级ip65'), + ], + ], + ), + ), + ); + } + + TableRow _buildTableRow(String item, String unit, String value) { + return TableRow( + children: [ + Padding(padding: const EdgeInsets.all(10), child: Text(item)), + Padding(padding: const EdgeInsets.all(10), child: Text(unit)), + Padding(padding: const EdgeInsets.all(10), child: Text(value)), + ], + ); + } + + // 应用场景(卡片网格) + Widget _buildScene() { + return GridView.builder( + padding: const EdgeInsets.all(12), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, mainAxisSpacing: 10, crossAxisSpacing: 10, childAspectRatio: 0.9), + itemCount: sceneList.length, + itemBuilder: (ctx, index) { + final item = sceneList[index]; + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(12), + boxShadow: [BoxShadow(color: Colors.black12, blurRadius: 4)], + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, children: [ - // 表头 - TableRow( - decoration: BoxDecoration(color: Colors.grey.shade100), - children: const [ - TableCell( - child: Padding( - padding: EdgeInsets.all(8.0), - child: Text( - '项目', - style: TextStyle(fontWeight: FontWeight.bold), - textAlign: TextAlign.center, - ), - ), - ), - TableCell( - child: Padding( - padding: EdgeInsets.all(8.0), - child: Text( - '补给(交换)的时期', - style: TextStyle(fontWeight: FontWeight.bold), - textAlign: TextAlign.center, - ), - ), - ), - TableCell( - child: Padding( - padding: EdgeInsets.all(8.0), - child: Text( - '推荐品种', - style: TextStyle(fontWeight: FontWeight.bold), - textAlign: TextAlign.center, - ), - ), - ), - TableCell( - child: Padding( - padding: EdgeInsets.all(8.0), - child: Text( - '容量', - style: TextStyle(fontWeight: FontWeight.bold), - textAlign: TextAlign.center, - ), - ), - ), - ], - ), - - // 行1:燃料 - TableRow( - children: const [ - Padding(padding: EdgeInsets.all(8.0), child: Text('燃料')), - Padding(padding: EdgeInsets.all(8.0), child: Text('随时')), - Padding(padding: EdgeInsets.all(8.0), child: Text('汽车用91号以上无铅汽油或乙醇含量不超过10%的无铅汽油(E10)')), - Padding(padding: EdgeInsets.all(8.0), child: Text('10L')), - ], - ), - - // 行2:发动机机油 - TableRow( - children: const [ - Padding(padding: EdgeInsets.all(8.0), child: Text('发动机机油')), - Padding(padding: EdgeInsets.all(8.0), child: Text('每日点检有不足时补给,交换初次:20小时,初次以后:每100小时')), - Padding(padding: EdgeInsets.all(8.0), child: Text('SAE分类 一般用途:10W-30或5W-30')), - Padding(padding: EdgeInsets.all(8.0), child: Text('1.7L')), - ], - ), - - // 行3:行走轴承 - TableRow( - children: const [ - Padding(padding: EdgeInsets.all(8.0), child: Text('行走轴承')), - Padding(padding: EdgeInsets.all(8.0), child: Text('每半年')), - Padding(padding: EdgeInsets.all(8.0), child: Text('车台润滑脂')), - Padding(padding: EdgeInsets.all(8.0), child: Text('-')), - ], - ), - - // 行4:减速机 - TableRow( - children: const [ - Padding(padding: EdgeInsets.all(8.0), child: Text('减速机')), - Padding(padding: EdgeInsets.all(8.0), child: Text('每半年')), - Padding(padding: EdgeInsets.all(8.0), child: Text('美孚XHP222')), - Padding(padding: EdgeInsets.all(8.0), child: Text('-')), - ], - ), - - // 行5:电池 - TableRow( - children: const [ - Padding(padding: EdgeInsets.all(8.0), child: Text('充电或更换电池')), - Padding(padding: EdgeInsets.all(8.0), child: Text('随时,没有电的情况下')), - Padding(padding: EdgeInsets.all(8.0), child: Text('遥控器使用专用充电器;动力电池使用220V充电')), - Padding(padding: EdgeInsets.all(8.0), child: Text('23Ah')), - ], + ClipRRect( + borderRadius: BorderRadius.circular(8), + child: Image.asset(item['img']!, height: 100, fit: BoxFit.cover), ), + const SizedBox(height: 10), + Text(item['title']!, style: const TextStyle(fontSize: 15, fontWeight: FontWeight.w500)), ], ), - ], - ), + ); + }, ); } - - // ===================== 故障诊断表格 ===================== - // 1. 发动机表格 - Widget _buildDiagnosticTable1() { - return Table( - border: TableBorder.all(color: Colors.grey, width: 1), - columnWidths: const {0: FixedColumnWidth(180), 1: FixedColumnWidth(180), 2: FixedColumnWidth(220)}, - children: [ - _tableHeader(), - _tableRow("发动机无法启动或很难启动", "没有燃料", "补充燃料", isFirst: true), - _tableRow("", "燃料无法抽取", "检查油门开关、油管"), - _tableRow("", "气温过低", "按照启动方法启动3-5次"), - _tableRow("", "火花塞打火不良", "拆卸清扫或更换"), - _tableRow("", "启动电压低", "充满电或者更换启动电池"), - _tableRow("", "喷油嘴或者过滤器堵塞", "清洁或者更换过滤器"), - _tableRow("", "其他", "按【启动方法】再启动,仍无法启动时,请联系销售店"), - _tableRow("中途熄火", "暖机不足", "充分暖机", isFirst: true), - _tableRow("", "割刀打到异物", "移动到平坦位置,检查割刀是否完整后重新发动"), - _tableRow("", "割刀柄缠绕异物", "去除异物,检查割刀是否完整后重新发动"), - _tableRow("发动机突然停止", "没有燃料", "补给", isFirst: true), - _tableRow("", "受到硬物冲击", "挪位置后再尝试启动"), - _tableRow("", "其他", "联系销售店"), - _tableRow("低速空转状态不良(发动机的旋转不稳定)", "空气过滤器的网孔堵塞", "清扫或交换", isFirst: true), - _tableRow("", "风扇处网孔堵塞", "清扫"), - _tableRow("", "其他", "联系销售店"), - _tableRow("输出或加速不足", "燃料不良", "更换", isFirst: true), - _tableRow("", "空气过滤器的网孔堵塞", "清扫或交换"), - _tableRow("", "风扇处网孔堵塞", "清扫"), - _tableRow("", "超负荷", "减荷"), - _tableRow("", "油门开关运行不畅", "清洁转轴或调节拉线钢丝"), - _tableRow("", "其他", "联系销售店"), - _tableRow("发动机附近有异常声音或异常振动", "停机检查升降等部件是否有松动", "联系销售店", isFirst: true), - _tableRow("发动机机油消耗过快", "", "联系销售店或本田售后店", isFirst: true), - _tableRow("发热", "发动机机油不足", "补给", isFirst: true), - _tableRow("燃料消耗过快", "空气过滤器的网孔堵塞", "清扫或更换", isFirst: true), - _tableRow("", "其他", "联系销售店"), - _tableRow("大量黑烟排出(状态不良)", "空气过滤器的网孔堵塞", "更换合适的机油", isFirst: true), - _tableRow("", "风门开合不畅", "清洁转轴或调节拉线钢丝"), - _tableRow("", "其他", "联系销售店"), - _tableRow("大量白烟排出(状态不良)", "燃料不良", "交换", isFirst: true), - _tableRow("", "发动机机油粘度不合适", "更换合适的机油"), - _tableRow("", "机油过多溢出至燃烧室", "燃烧至不冒白烟为止"), - _tableRow("", "其他", "联系销售店"), - ], - ); - } - - // 2. 发电机表格 - Widget _buildDiagnosticTable2() { - return SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Table( - border: TableBorder.all(color: Colors.grey, width: 1), - columnWidths: const {0: FixedColumnWidth(180), 1: FixedColumnWidth(180), 2: FixedColumnWidth(220)}, - children: [ - _tableHeader(), - _tableRow("发热量", "网孔堵塞", "清扫", isFirst: true), - _tableRow("", "检查三角带完好度和松紧度", "张紧或更换三角带"), - _tableRow("不发电", "其他", "联系销售店", isFirst: true), - ], - ), - ); - } - - // 3. 行走装置表格(支持横向滚动) - Widget _buildDiagnosticTable3() { - return SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Table( - border: TableBorder.all(color: Colors.grey, width: 1), - columnWidths: const {0: FixedColumnWidth(180), 1: FixedColumnWidth(180), 2: FixedColumnWidth(220)}, - children: [ - _tableHeader(), - _tableRow("无法原地转弯或直线行走", "其他", "联系销售店", isFirst: true), - _tableRow("", "电机刹车异常", "联系销售商"), - _tableRow("刹车或停车制动异常", "刹车线路异常", "联系销售商", isFirst: true), - _tableRow("", "发动机转速过低", "调高发动机转速"), - ], - ), - ); - } - - // 4. 割草装置表格(支持横向滚动) - Widget _buildDiagnosticTable4() { - return SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Table( - border: TableBorder.all(color: Colors.grey, width: 1), - columnWidths: const {0: FixedColumnWidth(180), 1: FixedColumnWidth(180), 2: FixedColumnWidth(220)}, - children: [ - _tableHeader(), - _tableRow("割刀不旋转", "安全离合器损坏", "更换安全离合器", isFirst: true), - _tableRow("", "割刀损坏或脱落", "更换"), - _tableRow("作业时异常振动", "转入异物", "清除异物", isFirst: true), - _tableRow("", "草湿度大", "等草干后作业"), - _tableRow("割除的草无法顺利排出", "割草高度过低", "调高割草高度", isFirst: true), - _tableRow("", "发动机转速过低", "调高发动机转速"), - _tableRow("", "作业速度过快", "减慢作业速度"), - _tableRow("", "草过长", "调高割草高度"), - _tableRow("割草有残留", "发动机转速过低", "调高发动机转速", isFirst: true), - _tableRow("", "作业速度过快", "减慢作业速度"), - _tableRow("", "割刀盘护罩内积草过多", "清理积草"), - _tableRow("", "割刀太低", "调高割草高度"), - _tableRow("刀销地面", "地形起伏大", "随地形调整割草高度", isFirst: true), - _tableRow("", "割刀或割刀架弯曲", "更换"), - ], - ), - ); - } - - // ===================== 工具方法 ===================== - TableRow _tableHeader() { - return TableRow( - decoration: BoxDecoration(color: Colors.grey.shade100), - children: const [ - Padding( - padding: EdgeInsets.all(8), - child: Text("问题现象说明", style: TextStyle(fontWeight: FontWeight.bold)), - ), - Padding( - padding: EdgeInsets.all(8), - child: Text("原因", style: TextStyle(fontWeight: FontWeight.bold)), - ), - Padding( - padding: EdgeInsets.all(8), - child: Text("处理", style: TextStyle(fontWeight: FontWeight.bold)), - ), - ], - ); - } - - TableRow _tableRow(String title, String reason, String solution, {bool isFirst = false}) { - return TableRow( - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: Text(isFirst ? title : "", style: isFirst ? const TextStyle(fontWeight: FontWeight.bold) : null), - ), - Padding(padding: const EdgeInsets.all(8), child: Text(reason)), - Padding(padding: const EdgeInsets.all(8), child: Text(solution)), - ], - ); - } - - // ===================== Markdown 内容 ===================== - static const String _alert = ''' -## 特别警告 -- 本商品为专业割草机,除割草以外,未经允许,严禁用于其它用途。 -- 本商品禁止在公路、国道等道路上行驶,如果因在道路上行驶而发生的交通事故,我公司概不负责。 -- 请勿对本商品进行改造。另外,为避免事故发生,请勿拆卸零部件,尤其是控制箱盖板和整机防护罩等。容易引起事故发生。 -- 使用遥控功能前,请先开启整机电源,开启遥控器时,必须将遥控器急停旋钮顺时针旋转跳起,长按3秒“开启”遥控器按钮。关闭遥控器时,长按3秒“关闭”遥控器按钮。 -- 如果运行过程中,点击遥控器按钮不起作用时,请长按2秒“开启”遥控器按钮,然后操作即可;如果仍然不起作用,请立即停车,重新启动遥控系统。 -- 本机自带遥控保护系统,因室外作业环境复杂,无线信号易受干扰,当遥控信号受干扰严重或超出遥控范围,机器将自动停止行走和割草;移动位置,确定遥控器通信正常后,重新启动遥控器。 -- 本机自带电池电压显示器,电量或电压过低时(电压低于48V),请及时更换电池或给电池充电;如果长时间不用,每月开启一次查看电压,若低于48V,请及时充电,以免发生过度放电现象,导致电芯损坏。 -- 遥控器使用专用充电电池,如果长时间不用,请取出,并及时充电! -'''; - - static const _alertinstruction = ''' -本商品将附下列警告标签。警告标签特别记载了需要注意的安全事项,使用本商品时必须遵守标签的指示,切勿做任何被禁止的事项。 - -**请看清警告标签的内容。** - -![警告标签](alert1.png) -![警告标签](alert2.png) -![警告标签](alert3.png) -![警告标签](alert4.png) -![警告标签](alert5.png) - -**为方便了解警告标签的内容,请保持标签清洁。警告标签损坏、丢失或判断不清时,请更换新品。根据本手册或事物确认并与销售网点联系** -'''; - - static const String _safety = ''' -安全使用本商品,必须注意防毒、防火、防机器事故发生。必须高度重视,提高警惕,万万不可粗心大意。为确保人身安全,应注意以下注意事项: -- 操作本商品前请务必阅读说明书,注意警告标示。 -- 操作本商品前请务必在开阔地带进行熟悉,避免误操误撞。 -- 作业人员必须带安全服装、防护眼镜、手套、耳塞和安全头盔。 -- 作业时,机器周围不要有其他人作业,防止发生意外事故。 -- 本机器动力用汽油作燃料,为易燃品,应注意防火。严禁在汽油机旁边点火和吸烟。严禁拆解电池等配件。 -- 加油后注意将油箱盖旋紧,如有外漏燃油擦干净,将机器移离加油点的地方再起动。 -- 禁止在汽油机工作状态下添加或倒出燃油。 -- 操作本商品时,双手不要触及消音器、汽缸体避免烫伤,发生意外事故。 -- 禁止急起步、急加速、急转弯和急停车。容易造成操作者被挥起或者车辆打滑、翻倒等事故。 -- 在倾斜路面上时,建议低速行驶,避免造成车辆打滑、翻倒等事故。 -- 本商品传动使用的是皮带,工作状态下必须关闭机器外罩,确保人身安全。 -- 存放前应将油箱内、汽油过滤器内、汽化器内的燃油放干净或消耗完,将机器擦干净,存放在通风、远离烟火的地方。 -- 存放时应放在小孩碰不到的地方,避免发生意外。 -- 禁止使用强酸、强碱等特殊工作液。 -- 工作结束后,操作人员需洗净身体暴露部位,并对各类穿戴衣具进行清洗。 -- 禁止下列人员操作本商品: - 精神疾病患者;醉酒的人;无操作知识的人;未成年人或老人; - 孕妇或哺乳期的妇女;过度疲劳者。 -'''; - - static const String _safetywork = ''' -### 驾驶前须知 -### 请穿好安全服装,戴好安全护具 -驾驶作业时,请穿戴适合作业的服装,不要穿戴背心短裤、拖鞋等轻便服装。并穿好防护鞋、戴好防护眼镜、手套等,做好安全准备。 -长时间作业时,为了减少噪音对人体的伤害,建议操作者佩戴耳塞,防止噪音。 -### 作业前的点检 -驾驶作业前,请做好必要的点检工作。发现异常的地方,请马上补修。另外,驾驶作业前,请检查清理车内堆积的杂草。以防火灾发生。 -### 严禁烟火 -加油、提取燃料时,请远离烟火。加油时,请在确认车辆熄火后进行。发动机保养或电池充电时,严禁靠近烟火。 -### 禁止在公路上行驶 -### 禁止乘坐 -本商品禁止人员乘坐。 -### 禁止鲁莽驾驶 -禁止喝酒、身体不良时作业。另外,请不要让不适合驾驶和作业的人员操作。 -### 确保作业安全(禁止入内) -驾驶作业时,本商品周围(特别是儿童),禁止靠近,至少保持5m的距离。必要时,请在作业地点前,摆放看板写明“割草作业中”、“禁止靠近” 等字样。 -驾驶作业前,请确认好机器状况,无异响、零部件松动等情况,确保工作安全。 -### 禁止在通风不良的地点启动行驶 -在发动机启动时,请必须在换气通风的场所进行。以防止排气中毒。 -### 请距离本商品5米后启动 -请必须在距离车辆5米后启动,以防刮伤。 -### 禁止、急加速、急转弯、急停车 -请不要进行急行、急加速、急转弯,急刹车等危险操作。容易造成车体打滑,翻车等事故。 -### 安全速度的遵守 -前进时,请确认好周围安全,驾驶时请确认好路面状况,以安全速度驾驶。 -### 推荐在坡上操作 -机器在斜坡工作的时候,请在斜坡上方操作。 -### 禁止在机器正下方作业 -机器斜坡工作时,在斜坡下操作一定不要站在机器的正下方。 -### 禁止作业时打开割刀罩 -请不要在作业时打开割刀罩。飞出的小石子等杂物会飞散到周围,造成危险。 -### 注意倾斜路面 -在倾斜路面驾驶时,请选择“低速档”行驶或转弯。否则,容易造成车体打滑,翻车等事故发生。 -### 禁止在急坡度路面使用 -### 注意检查并及时清理机器内部集草 -在恶劣环境或草量的地块割草,要注意机器内部碎草造成的堆积,尤其是排烟部、发动机风扇和发电机内部,及时清理。 -注意:碎草堆积会降低发动机和发电机的通风量,长期不清理会降低发动机和发电机使用效果,缩短机器使用寿命。 -### 注意路面湿滑,造成车体打滑 -### 注意地面障碍物,防止碰撞损坏 -### 注意地面颠簸,造成车体扭曲变形 -### 注意塌方 -请不要在路边、沟边作业。特别是在雨后、地震后,容易引起塌方等事故发生。 -### 停车时的安全确认 -停车时,务必关闭机体和遥控器电源。 -### 危险场所禁止停车 -停车时,请选择在平坦路面。不要在危险处停车。另外,请不要在易燃物附近停车。 -### 倾斜路面停车时,要固定车轮 -请不要在倾斜路面停车,如有迫不得已的情况,需停车时,请把车轮固定好。 -### 使用后的清扫 -使用后,请清除掉车下堆积的杂草等杂物。以防止火灾发生。 -#### 保养检查时请熄火 -保养或检查车辆时,必须在关闭电源后进行。 -### 注意烫伤 -发动机熄火后,各个部位都是高温状态,容易烫伤。请待车辆冷却后再进行保养。 -### 本商品禁止在公路、国道等道路上行驶。 -'''; - - static const String _prepare = ''' -### 发动前检查 -发动前必须进行车体检查,如有异常,须马上处理。 -请将车身上的杂草等杂物清洗干净,以免火灾等事故的发生。 -发动机和发电机空气入口和排气口处堆积过多杂草,会导致发动机过热,车体发生异常等情况。作业前,必须认真检查好发动机和发电机空气入口和排气口处有无异物堆积,如有堆积,请及时清理干净。 -### 燃料的检查和加注,电量的检测和充电 -- 加油时务必远离烟火 -- 加油时,务必在发动机停止状态下进行。 -- 加油时,请注意不要超过油面(给油口面过滤底面),注意不要把油漏到加油口外。如有外漏,请马上擦洗干净。 -- 充电时,要使用标准220V电压,不得违规操作。 -- 充电时,检查周围是否有易燃物品,远离危险场所。 -- 充电时,注意通风。 -- 充电处应放在儿童不易触碰的地方,当心潜在危险。 -- 请检查油量、电量是否正常。 -- 请确认电量表,不足或低于48V时,及时充电。 -- 请确认油量,不足或报警时,打开油盖,及时加油,加满后关闭油盖。 -- 检查机器工作总时间,发动机机油状态是否正常,机油浑浊,及时更换。 -### 建议: -- **使用燃料:汽车用91号以上无铅汽油或乙醇含量不超过10%的无铅汽油(E10)。** -- **油箱容量:10L。** -- **机油:加注汽车用四冲程机油到油尺的游标中间位置,标号根据季节更换。** -- **机油容量** -- **不更换机油滤清器:1.7 L,更换机油滤清器:1.9 L。** -'''; - - static const String _startmethod = ''' -## 警告 -- 启动割草机前必须确认周围安全,退至5m外。 -- 启动发动机时必须在通风环境好的场所进行。避免引起排气中毒事故发生。 -- 启动发动机时必须确认周围安全。 -- 启动发动机时,必须确认处于无石块等异物的平整地块,处于停车状态。避免启动时损坏割刀或石块飞出等,导致使用者或第三者受伤。 -### 行走启动 -- 机器急停按钮顺时针旋转,整机解锁复位。 --点按机器电源按钮,仪表和指示灯亮。 -- 确认电量 -- 长按遥控器电源按钮,电源按钮亮起,,至遥控器上电源显示灯。 -- 拨动方向摇杆,割草机行驶 -- 长距离行走时须将发动机启动,并将割刀转速提升至最高,防止电量消耗过快。 -'''; - - static const String _work = ''' -## 警告 -- 驾驶时不要靠近周围的人。 -- 出发时必须确认周围安全,注意路面坡度等状况,以安全速度运行。 -- 禁止急发进、急加速、急转弯,避免造成机器打滑、翻倒等事故发生。 -- 在倾斜路面上应低速行驶,否则容易造成机器打滑、翻倒等事故发生。 -- 禁止横穿倾斜路面,容易造成机器打滑或翻车。 -- 禁止在倾斜路面上转弯,容易造成车辆逆转、打滑或翻车。 -- 视线不清或狭窄道路、倾斜、起伏等行驶环境差的路上,请遵从诱导者的指示,做好安全确认后再行驶。 -### 割草启动 -- 确认机器前后左右安全。 -- 确认行驶模式。 -- 确认割刀盘升至最高位置。 -- 确认遥控器正常。 -- 当摁下A键时,A键亮起时左摇杆上拨上拨发动机拨叉开关,注意:发动机点火启动后,立即松开该按钮,每次点火时间不得超过3s,时间过长易损坏发动机,冬季冷机点火困难,可以反复3-5次,中间需停顿5s。 -- 割刀正常旋转,机器声音频率均匀正常,即启动成功。 -- 上下拨动切割高度拨叉开关,将割刀盘调整至所需位置。 -- 当摁下A键时,A键亮起时右摇杆上拨割草电机启动将割刀转速调整至所需转速。 -- 割草机行驶,开始割草。 -### 割草停止 -- 下拨发动机停止拨叉开关,发动机熄火。 -- 注意:等待割刀完全停止旋转后,再靠近机器查看。 -'''; - - static const String _stop = ''' -## 警告 -- 禁止急停车,容易造成机器打滑翻倒。 -- 请在平坦坚硬且没有危险的场所停车;勿在倾斜路面停车,有不得已情况的,必须固定车轮。 -- 请不要靠近易燃易爆物品停车。 -### 割草机停车与关闭 -- 长按割草机电源按钮2s及以上,松开电源键,按钮指示灯闪烁至熄灭,割草机关机。 -- 特别紧急情况下,按下遥控器上B按钮,割草机停车,此情况会造成部分数据丢失。 -- 长按遥控器电源开关,直至显示屏熄灭,遥控器关机。 -- 注意:长时间停放车辆时需要选择水平的地面,避免车头向下超过20°。 -- 注意:若长时间不使用,请至少每月一次给割草机充电,间隔不大于30个自然日。 -'''; - - static const String _controluse = ''' -## 警告 -- 非专业人员请勿拆解遥控器。 -- 遥控器长时间不使用,请将电池充满电。 - -### 遥控器 -![这是图片](control.png) -- 1.2.4G 3dB天线 -- 2.USB1/图像输出 -- 3.拨动三档开关E -- 4.拨 轮 C -- 5.拨 轮 C -- 6.电量指示灯① -- 7.按键 A -- 8.开关键 -- 9.按键B -- 10.右摇杆×2、Y2 -- 11.拨 轮 D -- 12.拨动三档开关F -- 13.USB2/充电 -### 遥控器电源 -![这是遥控器电源图片](controlbattery.png) -| 闪灯方式 | |电量 | -| ---- | ---- |---- | -| ●●●● | | 76%~100% | -| ●●●○ | |51%~75% | -| ●●○○ | | 26%~50% | -| ●○○○ | | 1%~25% | - -### 操作割草机行走 -![这是遥控器电源图片](operationwalk1.png) -左摇杆控制割草机前进 -上推前进-下推后退 - -![这是遥控器电源图片](operationwalk2.png) -右摇杆控制机器左右旋转 -左推左转-右推右转 - -### 急停按钮 -![这是遥控器电源图片](stopbutton.png) -当按下B键时B键亮起,机器停止运行,发动机熄火。 -### 底盘升降 -![这是遥控器电源图片](dipan.png) -上拨抬高割刀,下拨降低割刀,中间位置高度保持不变,拨杆需要手动回中。 -### 发动机启停 -![这是遥控器电源图片](fadongji.png) -当摁下A键时,A键亮起时左摇杆上拨发动机点火,下拨发动机熄火,拨杆自动回中。 - -**注:发动机点火启动后,立即松开该按钮,每次点火时间不得超过3s,时间过长易损坏发动机,冬季冷机点火困难,可以反复3-5次,中间需停顿3s** -### 割刀转速调整 -![这是遥控器电源图片](adjuctvec.png) -当摁下A键时,A键亮起时右摇杆上拨提高割刀转速,下拨降低割刀转速,中间位置保持不变,拨杆自动回中。 - -### 模式切换 -![这是遥控器电源图片](modelchange.png) -拨挡在上拨档时为远程遥控模式 -拨挡在中间档时为蓝牙遥控模式 -拨挡在下拨档时为本地遥控模式 - -**操作步骤** -- 上拨“切割高度”抬高割刀至最高处,松开该拨扭。 -- 上拨“发动机”拨杆,点火发动机,点火成功后立即松开。 -- 根据工作需要调节油门大小、割刀高度、方向遥杆等。 -- 工作结束,下拨“发动机”拨杆,发动机熄火,长按“电源按钮”关闭遥控器,所有开关回归零位。 -**注意:遥控有效距离:无干扰情况下200米。** -'''; - - static const String _about1 = ''' -**注意:**对本商品进行维修或零件更换时,请务必使用本公司的正牌零件。如使用非本公司零件,本公司将不对商品进行保修等服务。 -| 项目 | 更换时间| 类型 | 三包期限 | -| ---- | ---- |---- |---- | -| 发动机 | 发现不良时更换 | 关键零部件 | 1年 | -| 发电机 | 发现不良时更换 | 关键零部件 | 1年 | -| 控制器 | 发现不良时更换 | 关键零部件 | 1年 | -| 电机 | 发现不良时更换 | 关键零部件 | 1年 | -| 减速机 | 发现不良时更换 | 关键零部件 | 1年 | -| 驱动器 | 发现不良时更换 | 关键零部件 | 1年 | -| 遥控器 | 发现不良时更换 | 关键零部件 | 1年 | -| V形皮带 | 发现不良时更换 | 易耗橡胶件 | 3个月 | -| 轮胎/履带 | 发现不良时更换 | 易耗橡胶件 | 3个月 | -| 割刀 | 发现不良时更换 | 易耗金属件 | 3个月 | -| 升降导套 | 发现不良时更换 | 易耗尼龙件 | 3个月 | -'''; - - static const String _about2 = ''' -如果在使用过程中发生问题、或者有疑问以及对于售后服务的要求,请直接与销售店或本公司售后服务中心联系。联系时请告知型号标签上的制造号码、发动机品牌及型号等相关商品信息。配置的发动机品牌名称及型号名称,请参照说明书的〖技术参数〗。 -'''; - - static const String _breakdown1 = ''' -**注意** -- 本商品发生问题时,请停止使用。参照下列的问题诊断表来进行适当的处理。若发生下列问题诊断表没有记载的问题,或根据处理方法页没有解决问题的情况下,请直接与销售网点联系。 -- 下列的处理内容中也包括很多专门知识,以及指定的专门工具、仪器等,若顾客无法个人处理,请联系销售网点 - -### 发动机 -'''; - - static const String _check1 = ''' -### 发动机的检查 -#### 日常检查 -- 燃料的检查 -- 发动机机油的检查 -- 各部螺丝松紧的检查 -- 异常振动、异常声音 -- 电控系统的检查 -- 风门、油门开关转轴动作的检查 - -#### 定期检查 -| 项目 | 作业额度 | -| ---- | ---- | -| 空气滤清器检查 | 每日2小时 | -| 空气滤清器的清洁 | 每6个月或100小时 | -| 空气滤清器滤芯的更换 | 每2年或每500小时 | -| 各部的清扫及松紧的检查 | 每日8小时 | -| 发动机油检查、补给 | 每日8小时 | -| 发动机油的交换 | 初次为20小时,以后为每100小时 | -| 火花塞的清扫 | 每 50小时 | -| 燃料过滤器的清扫 | 每200小时 | -| 火花塞间隙的清扫调整 | 每200小时 | -| 燃料管的更换 | 每2年 | -| 发电机检查 | 每日2小时 | -| 发电机的清洁 | 每日8小时 | -| 电池的检查、补给 | 每日8小时 | -| 大修 | 每1000小时 | -'''; - - static const String _check2 = ''' -**注意** -- 涉及拆卸及安装部件时,注意不要弄伤手指。 -- 因检查及作业需要打开或拆卸时,检查结束后必须还原。 -'''; - - static const String _check4 = ''' -**注意** -对本商品进行维修或零件更换时,请勿必使用本公司的正牌零件。如使用非本公司零件,本公司将可能不对商品进行保修等服务。 -| 项目 |更换时间 | 类型 | 三包期 | -| ---- | ---- |---- |---- | -| V形皮带 | 发现不良时更换 | 橡胶件 | 3个月 | -| 轮胎/履带 | 发现不良时更换 | 橡胶件 | 3个月 | -| 割刀 | 发现不良时更换 | 金属件 | 3个月 | -| 升降导套 | 发现不良时更换 | 尼龙件 | 3个月 | - -**建议:** -V形皮带用满100小时后,最好更换新的。 -轮带/履带因外力导致漏气、断裂等不属于保修范围。 -'''; - - static const String _check5 = ''' -**警告** -- 维修,保养时必须停止发动机, -- 发动机停止后一段时间内,发动机各部及机油出于高温状态时,避免烫伤,请冷却后再维修,保养。 - -**发动机机油的检查补给、更换** -- 根据国家法律规定处理废油。 -- 如不及时补油,发动机将会产生故障,因此,请及时补充制定的机油。 - -**建议:** - 请在发动机启动前,或熄火十分钟之后检测油量。因为发动机熄火时,车内各部还残留有机油,无法正常的检测油量。 - - ![这是图片](check1.png) - ![这是图片](check2.png) - -检查: - -1)将车辆停放在平坦的路面。 - -2)取下给油塞(如右图所示)。 - -3)检查机油塞尺。 - -4)机油不足时,补充机油。 - -5)试装机油塞尺,机油位处于塞尺中部。 - -6)装上给油塞。 - -![这是图片](check3.png) -![这是图片](check4.png) -机油更换或更换机油过滤器 - -1)准备装机油的容器。 - -2)把机油排油塞取下,排出机油。 - -3)更换机油过滤器(如右图所示)。 - -4)安装机油排油塞,灌入新机油。 - -5)整机试运行5min。 -![这是图片](check5.png) -![这是图片](check6.png) -![这是图片](check7.png) -**注意:请割草后,每天检查空气过滤器。过滤器过脏,容易引起发动机故障、输出动力不足、寿命降低等情况发生。** - -1)打开空气过滤器外壳卡扣。 - -2)打开外壳,拿出空气过滤器,从滤芯支架上松开两个弹簧片,从支架上拆下泡沫滤芯,拆下纸质滤芯。 - -3)检查两个滤芯,如果损坏则更换。始终按计划的时间间隔更换纸质滤芯。 - -4)如果要重复使用,请清洁滤清器元件。纸质滤芯:在硬质表面上轻敲滤芯数次来清除污垢,或通过滤芯从清洁的面向发动机的一面吹压缩空气 [不超过207 kPa (2.1 kgf/cm2, 30 psi)] 。切勿试图刷掉污垢; 刷洗会迫使污垢进入纤维。 如果纸质滤芯太脏了,请更换。 -泡沫滤芯:用温肥皂水清洗,冲洗干净,彻底干燥。 或用不易燃的溶剂清洗并晾干。将滤芯浸入干净的机油中,然后挤出多余的油。 如果泡沫中残留的油过多,发动机在启动时会冒烟。 - -5)用湿抹布擦去空气滤清器主体和盖子内部的污垢。小心操作以防止灰尘进入化油器的气室。 - -6)重新安装纸质滤芯,将泡沫滤芯放在滤芯支架上,然后重新安装空气滤清器外壳上的滤芯支架。紧紧地钩住两个弹簧片。 - -7)用手牢牢锁定空气滤清器盖锁。 -![这是图片](check8.png) -![这是图片](check9.png) -**注意:向外拔出火花塞时,请握住火花塞盖取下。用力拽线容易扯断软线。松动的火花塞会过热并损坏发动机。过度拧紧火花塞会损坏气缸盖中的螺纹。** - -1)断开火花塞盖,清除火花塞区域周围的污垢。 - -2)用 5/8 英寸火花塞扳手拆下火花塞。 - -3)检查火花塞: 如果损坏、严重结垢、密封垫圈状况不佳,或电极磨损,请更换。 - -4)用线型塞尺测量火花塞电极间隙测量。 如有必要,小心弯曲侧电极来纠正间隙。间隙应为:0.7-0.8 毫米。 - -5)用手小心地安装火花塞,以避免交叉螺纹。 - -6)火花塞装好后,用5/8英寸火花塞拧紧扳手压缩密封垫圈。安装新火花塞时,拧紧1/2圈以压缩垫圈。重新安装原厂火花塞时,拧紧1/8-1/4圈以压缩垫圈。 - -扭矩:18.0 N•m (1.8 kgf•m, 13 Ibf•ft) -推荐火花塞:ZER5F (NGK)或FR2A (NGK) -'''; - - static const String _check6 = ''' -**警告** -- 保养,维修时必须停止发动机并且确认刀盘停转。 -- 发动机停止一段时间内,各部或发动机本身出于高温时,为避免烫伤,请待冷却后再保养维修。 - -因橡胶固有特性,使用一段时间后会松弛,需要注意根据使用情况适当张紧,否则容易出现脱带情况。 -'''; - - static const String _check7 = ''' -**注意** - -- 切勿用水清洗发动机和底盘,避免浸水导致电路故障或生锈。 -- 坚硬的粘着物容易引起故障,请清除干净。 -- 如因坚硬的粘着物而不能运行时,请勿强行操作。 - -**通常使用后的维修及保养** -- 使用后及时清除粘着物的草或泥等杂物。 -- 请在水泥地等坚硬干燥地面驻车。 -- 请在室内存放。 - -**长期的保管方法** - -**警告** - -勿在烟火处保管,避免火灾。 -- 请依照〖停车方法〗的顺序停车。 -- 清除粘着的草和泥等杂物。 -- 对紧固件和已锈蚀的部位应涂黄油,进行防锈处理。 -- 每个月充满电一次,将有助于延长电池的使用寿命。 - -请待发动机冷却后,排空油箱和化油器,整机盖上防水罩,水平存放在阴凉干燥的地方保管。将汽油过滤器处固定卡箍去掉。燃油管路从过滤器处拔出,将燃油箱中的油排空到认可的汽油容器中。如果燃油箱配有阀门,将燃油阀转到OPEN或ON位置以启用排空。排空完成后,可启动发动机至自然熄火以消耗残余的汽油,重新连接燃油管路。松开化油器放油螺钉,将化油器中的油排空到认可的汽油容器中。 排空完成后,拧紧化油器放油螺钉。 - -![这是图片](check0.png) - -- 如果您的发动机在油箱和化油器中存放汽油,那么降低汽油蒸汽着火的风险是非常重要的。选择通风良好的,远离任何带火焰的设备的存储区域,如炉子、热水器或烘干机。还要避开任何产生火花的电动机的区域,或操作电动工具的区域。 -- 如果可能,请避开高湿度的存储区域,因为那样会促进生锈和腐蚀。 -- 除非所有燃料已从燃油箱中排出,否则将燃油阀保持在CLOSED或OFF位置以减少燃油泄漏的可能性。 -- 在发动机和排气系统冷却后,盖上发动机以防止灰尘进入。高温发动机和排气系统会点燃或熔化一些材料。 -- 请勿使用塑料片作为防尘罩。 -- 无孔盖会使机器不易蒸发水分,促进生锈和腐蚀。 -'''; - - static const String _starpoint = ''' -**警告** -- 请把货车停放在平坦路面,必须固定前轮。 -- 作业过程中请不要让人靠近车辆及渡板。 -- 渡板要很强的强度,可承受机械重量和负载的重量。宽度比履带/轮胎宽2倍以上。长要比货车或台面高4倍,并要做好防滑处理。 -- 确定渡板的挂钩挂在货台上台和货台没有断层和错位。 -- 请缓速前进,最好采用MT模式,装车。 -- 请不要在渡板上转弯,容易坠车。 -- 在运输前,确定把车体固定在货车的货台上。 - ![这是遥控器电源图片](starpoint1.png) -![这是遥控器电源图片](starpoint2.png) -- 把货车停放在平坦路面,固定车轮。 -- 确定渡板的挂钩挂在货台上台和货台没有断层和错位 -- 请缓速前进、装车。 -- 根据〖停车方法〗的顺序停车,并用钢丝或绳索将车辆固定在货车货台上。 -'''; } diff --git a/lib/features/home/presentation/routes/home_routes.dart b/lib/features/home/presentation/routes/home_routes.dart index ac36c274..244be210 100644 --- a/lib/features/home/presentation/routes/home_routes.dart +++ b/lib/features/home/presentation/routes/home_routes.dart @@ -2,8 +2,8 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:go_router/go_router.dart'; import 'package:maibu_satabot_v2/features/home/presentation/pages/dj_page.dart'; import 'package:maibu_satabot_v2/features/home/presentation/pages/home_page.dart'; -import 'package:maibu_satabot_v2/features/home/presentation/pages/productDesc.dart'; import 'package:maibu_satabot_v2/features/home/presentation/pages/usage.dart'; +import 'package:maibu_satabot_v2/features/home/presentation/pages/productDesc.dart'; import '../../../../core/di/injection.dart'; import '../../../../core/router/route_paths.dart'; @@ -27,8 +27,8 @@ class HomeRoutes { ), GoRoute(path: RoutePaths.routePlan, builder: (context, state) => const RoutePlanPage()), GoRoute(path: RoutePaths.djMap, builder: (context, state) => const DjPage()), - GoRoute(path: RoutePaths.productDesc, builder: (context, state) => const ManualPage()), - GoRoute(path: RoutePaths.usage, builder: (context, state) => const ProductPage()), + GoRoute(path: RoutePaths.productDesc, builder: (context, state) => const ProductPage()), + GoRoute(path: RoutePaths.usage, builder: (context, state) => const ManualPage()), GoRoute( path: RoutePaths.runningStatus, // builder: (context, state) => const RunningStatusPage(), diff --git a/lib/features/machine_details/presentation/pages/machine_details_page.dart b/lib/features/machine_details/presentation/pages/machine_details_page.dart index 918fa7f2..b41520a4 100644 --- a/lib/features/machine_details/presentation/pages/machine_details_page.dart +++ b/lib/features/machine_details/presentation/pages/machine_details_page.dart @@ -346,9 +346,10 @@ class _MachineDetailsPageState extends State { return InkWell( onTap: () { if (title == "使用说明") { - context.go(RoutePaths.productDesc); - } else { context.go(RoutePaths.usage); + } else { + context.go(RoutePaths.productDesc); + //ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('暂未开放$title功能'))); } },