This commit is contained in:
mmc
2026-02-25 17:22:59 +08:00
parent 4583ac8ca0
commit 30ef6c8e40
11 changed files with 1974 additions and 141 deletions

View File

@@ -4,9 +4,12 @@ import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:geolocator/geolocator.dart';
import 'package:latlong2/latlong.dart';
import 'package:maibu_satabot_v2/features/home/presentation/widgets/common/enum.dart';
import 'package:maibu_satabot_v2/features/home/presentation/widgets/startpoint_area.dart';
import '../path_list_pages.dart';
class MapPageEnterprise extends StatefulWidget {
const MapPageEnterprise({Key? key}) : super(key: key);
@@ -20,6 +23,9 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
LatLng? _currentLatLng;
StreamSubscription<Position>? _positionSub;
bool _hasMovedOnce = false;
bool _isPanelOpen = false; // 控制面板显示/隐藏
RobotMode _currentRobotMode = RobotMode.point;
AreaMode _currentAreaMode = AreaMode.work;
@override
void initState() {
@@ -141,9 +147,53 @@ class _MapPageEnterpriseState extends State<MapPageEnterprise> {
top: maxTop > 10 ? 11 : maxTop, // 确保不超出屏幕范围
child: FloatingActionButton(
onPressed: _moveToCurrentLocation,
child: new VerticalFloatMenu(),
child: new VerticalFloatMenu(
onEditTap: (bool isOpen) {
// 关键:接收子组件的回调,修改外部的_isPanelOpen
setState(() {
_isPanelOpen = isOpen;
});
},),
),
),
if (_isPanelOpen)
Positioned(
left: 0,
right: 0,
bottom: 0,
child: BottomOperationPanel(
// 传入初始值
initialRobotMode:RobotMode.point ,
initialAreaMode: _currentAreaMode,
// 接收面板的事件回调
onComplete: () {
// 完成按钮点击:关闭面板
setState(() => _isPanelOpen = false);
},
onRobotModeChanged: (mode) {
// 接收机器人模式变更
//setState(() => _currentRobotMode = mode);
debugPrint('外部收到机器人模式:$mode');
},
onAreaModeChanged: (mode) {
// 接收作业区域模式变更
//setState(() => _currentAreaMode = mode);
debugPrint('外部收到区域模式:$mode');
},
onAddTap: () {
// 加号按钮自定义逻辑
debugPrint('外部处理加号按钮点击');
},
onLandTap: () {
// 地块标签自定义逻辑
debugPrint('外部处理地块标签点击');
},
onRouteTap: () {
// 航线标签自定义逻辑
debugPrint('外部处理航线标签点击');
},
),
),
],
),
));