优化和路径规划新适配
This commit is contained in:
@@ -146,17 +146,16 @@ class _RemoteControlPageState extends State<RemoteControlPage> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// 监听全局状态(这些通常不随摇杆频繁变化)
|
||||
final userState = context.watch<AppUserCubit>().state;
|
||||
final deviceState = context.watch<DevicesCubit>().state;
|
||||
final currentDevice = deviceState.selectedDevice;
|
||||
|
||||
// 🔥 只监听 RemoteControlCubit,避免其他状态变化导致频繁 rebuild
|
||||
final remoteCubit = context.read<RemoteControlCubit>();
|
||||
final targetDevice = remoteCubit.state.targetDevice;
|
||||
final hasPermission = remoteCubit.state.hasPermission;
|
||||
|
||||
///context.read<RemoteControlCubit>().requestControlPermissionS(currentDevice!.deviceName, "app");
|
||||
// 🔥 调试日志:检查设备状态
|
||||
debugPrint('🔍 [RemoteControlPage] build - targetDevice: ${targetDevice?.deviceName}');
|
||||
|
||||
if (currentDevice == null) {
|
||||
if (targetDevice == null) {
|
||||
debugPrint('❌ [RemoteControlPage] targetDevice 为空,显示离线页面');
|
||||
return _buildOfflineScaffold();
|
||||
}
|
||||
|
||||
@@ -195,25 +194,23 @@ class _RemoteControlPageState extends State<RemoteControlPage> {
|
||||
p.showRightPip != c.showRightPip,
|
||||
|
||||
builder: (context, state) {
|
||||
// 🔥 只从 targetDevice 获取 deviceId
|
||||
// 🔥 从 targetDevice 获取 deviceId
|
||||
final targetDevice = context
|
||||
.watch<RemoteControlCubit>()
|
||||
.state
|
||||
.targetDevice;
|
||||
final deviceId = targetDevice?.deviceName;
|
||||
|
||||
// debugPrint('🔍 [WebRTC检查] targetDevice: $targetDevice, deviceId: $deviceId');
|
||||
// debugPrint('🔍 [WebRTC检查] user: ${userState.user != null}, token: ${userState.user?.token != null}');
|
||||
|
||||
if (deviceId != null &&
|
||||
userState.user != null &&
|
||||
userState.user!.token != null) {
|
||||
// 🔥 从 RemoteControlCubit 获取 token(如果有的话)
|
||||
// 注意:如果 token 不在 RemoteControlCubit 中,需要从其他地方获取
|
||||
// 这里假设 token 是有效的,直接构建 URL
|
||||
if (deviceId != null && deviceId.isNotEmpty) {
|
||||
_videoStreamUrl =
|
||||
"webrtc://${TCPConsts.TCP_IP}/live/livestream/$deviceId?token=${userState.user!.token}";
|
||||
// debugPrint('🎬 [WebRTC] URL构建成功: $_videoStreamUrl');
|
||||
"webrtc://${TCPConsts.TCP_IP}/live/livestream/$deviceId";
|
||||
debugPrint('🎬 [WebRTC] URL构建成功: $_videoStreamUrl');
|
||||
} else {
|
||||
_videoStreamUrl = '';
|
||||
// debugPrint('❌ [WebRTC] URL构建失败 - deviceId: $deviceId, hasUser: ${userState.user != null}, hasToken: ${userState.user?.token != null}');
|
||||
debugPrint('❌ [WebRTC] URL构建失败 - deviceId: $deviceId');
|
||||
}
|
||||
final int originY = context
|
||||
.watch<RemoteControlCubit>()
|
||||
@@ -222,18 +219,16 @@ class _RemoteControlPageState extends State<RemoteControlPage> {
|
||||
.originY;
|
||||
// debugPrint("${originY},originY");
|
||||
return WebRTCLocalPlayer(
|
||||
// 这里的 URL 拼接根据你的后端规则
|
||||
// streamUrl: "webrtc://${TCPConsts.TCP_IP}/live/livestream/${currentDevice.deviceName}?token=${userState.user!.token}",
|
||||
streamUrl: _videoStreamUrl,
|
||||
showLeftPip: state.showLeftPip, // 从 Cubit 状态中读取
|
||||
showRightPip: state.showRightPip, // 从 Cubit 状态中读取
|
||||
isFrontMain:
|
||||
context
|
||||
.watch<RemoteControlCubit>()
|
||||
.state
|
||||
.controlEntity
|
||||
.originY >=
|
||||
0,
|
||||
showLeftPip: state.showLeftPip,
|
||||
showRightPip: state.showRightPip,
|
||||
isFrontMain: originY >= 0,
|
||||
onDoubleTap: () {
|
||||
debugPrint('👆 [RemoteControlPage] 双击屏幕,切换前后视角');
|
||||
// 🔥 通过 TCP 发送切换视角指令
|
||||
// 这里需要调用 RemoteControlCubit 的方法来切换视角
|
||||
context.read<RemoteControlCubit>().toggleCameraView();
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user