点击选中 获取路径 的结果 完成
This commit is contained in:
@@ -1,4 +1,12 @@
|
||||
enum WorkMode { bow, custom }
|
||||
enum WorkMode {
|
||||
bow("0"), // 作业模式:bow,值为0
|
||||
custom("2"); // 作业模式:custom,值为2
|
||||
|
||||
// 定义枚举的数值属性
|
||||
final String value;
|
||||
// 枚举构造函数(必须是const)
|
||||
const WorkMode(this.value);
|
||||
}
|
||||
|
||||
enum RobotMode { point, robot }
|
||||
|
||||
|
||||
@@ -43,6 +43,12 @@ class PlotData {
|
||||
});
|
||||
}
|
||||
|
||||
class PlotDataPath {
|
||||
final dynamic? jsonData; // 原始数据的JSON字符串(可选,便于调试或后续使用)
|
||||
|
||||
PlotDataPath({this.jsonData});
|
||||
}
|
||||
|
||||
class MapPageEnterprise extends StatefulWidget {
|
||||
const MapPageEnterprise({Key? key}) : super(key: key);
|
||||
|
||||
@@ -68,6 +74,7 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
bool _isListBoxOpen = false; //列表面板显示/隐藏
|
||||
// 新增:存储选中的地块(null表示未选中)
|
||||
PlotData? _selectedPlot;
|
||||
PlotDataPath? _selectedPlotPath; // 存储选中地块的路径数据(可选)
|
||||
// 新增:控制底部作业面板显示
|
||||
bool _isWorkPanelOpen = false;
|
||||
|
||||
@@ -482,9 +489,7 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
Widget _buildWorkPanel() {
|
||||
return BlocBuilder<DevicesCubit, DevicesState>(
|
||||
builder: (context, state) {
|
||||
print(
|
||||
'当前DevicesState的pathData: ${state}',
|
||||
); // 调试输出,查看pathData内容
|
||||
print('当前DevicesState的pathData: ${state}'); // 调试输出,查看pathData内容
|
||||
// 无选中地块或无路径数据时返回空
|
||||
if (_selectedPlot == null || state.pathData == null) {
|
||||
return const SizedBox.shrink();
|
||||
@@ -493,22 +498,34 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
// 解析路径数据(根据你的实际数据结构调整)
|
||||
List<Map<String, dynamic>> pathRecords = [];
|
||||
if (state.pathData is List) {
|
||||
pathRecords = state.pathData as List<Map<String, dynamic>>;
|
||||
}
|
||||
// 第一步:安全转换为List,并过滤掉非Map的元素
|
||||
final List<dynamic> rawList = state.pathData as List<dynamic>;
|
||||
pathRecords = rawList
|
||||
.where((item) => item is Map<String, dynamic>)
|
||||
.cast<Map<String, dynamic>>()
|
||||
.toList();
|
||||
|
||||
// 提取关键信息用于展示
|
||||
String workArea = '0 亩';
|
||||
int pointCount = 0;
|
||||
String workMode = '未知';
|
||||
if (pathRecords.isNotEmpty) {
|
||||
final record = pathRecords.first;
|
||||
workArea = record['workingArea']?.toString() ?? '0 亩';
|
||||
pointCount = record['plotPoints'] != null
|
||||
? (record['plotPoints'] as List).length
|
||||
: 0;
|
||||
workMode = record['workMode'] ?? '未知';
|
||||
// 第二步:只有列表非空时才赋值第一条数据
|
||||
if (pathRecords.isNotEmpty) {
|
||||
_selectedPlotPath = PlotDataPath(jsonData: pathRecords.first);
|
||||
} else {
|
||||
_selectedPlotPath = null; // 空列表时清空,避免残留旧数据
|
||||
}
|
||||
} else {
|
||||
_selectedPlotPath = null; // 非List类型时清空
|
||||
}
|
||||
|
||||
print(
|
||||
_selectedPlotPath == null
|
||||
? '无数据'
|
||||
: 'path坐标: ${jsonDecode(_selectedPlotPath!.jsonData['jsonData'] as String)['planModel']}',
|
||||
);
|
||||
String workMode =
|
||||
jsonDecode(
|
||||
_selectedPlotPath!.jsonData['jsonData'] as String,
|
||||
)['planModel'] ==
|
||||
WorkMode.bow.value
|
||||
? "弓字模式"
|
||||
: "自定义模式";
|
||||
return Positioned(
|
||||
left: 0,
|
||||
right: 0,
|
||||
@@ -570,21 +587,7 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
// 新增:展示路径数据关键信息
|
||||
Text(
|
||||
'作业面积:$workArea',
|
||||
style: const TextStyle(
|
||||
fontSize: 14,
|
||||
color: Colors.grey,
|
||||
),
|
||||
),
|
||||
Text(
|
||||
'打点数量:$pointCount 个',
|
||||
style: const TextStyle(
|
||||
fontSize: 14,
|
||||
color: Colors.grey,
|
||||
),
|
||||
),
|
||||
|
||||
Text(
|
||||
'作业模式:$workMode',
|
||||
style: const TextStyle(
|
||||
@@ -657,7 +660,7 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
// 3. 开始作业按钮(加载中禁用)
|
||||
SizedBox(
|
||||
width: double.infinity,
|
||||
height: 48,
|
||||
height: 50,
|
||||
child: ElevatedButton(
|
||||
onPressed: state.isLoading || pathRecords.isEmpty
|
||||
? null
|
||||
@@ -963,6 +966,7 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
|
||||
|
||||
setState(() {
|
||||
_isListBoxOpen = isOpen;
|
||||
_isWorkPanelOpen = false;
|
||||
});
|
||||
},
|
||||
onWorkModeSelected: (mode) {
|
||||
|
||||
Reference in New Issue
Block a user