mirror of
https://git.hmsn.ink/flutter/vnc_viewer.git
synced 2026-03-20 00:02:22 +09:00
f11 전체 화면 추가
This commit is contained in:
@@ -8,13 +8,90 @@ import 'remote_frame_buffer_isolate_messages.dart';
|
|||||||
import 'package:fpdart/fpdart.dart';
|
import 'package:fpdart/fpdart.dart';
|
||||||
|
|
||||||
class RemoteFrameBufferListenerDetector extends Listener {
|
class RemoteFrameBufferListenerDetector extends Listener {
|
||||||
|
final Image _image;
|
||||||
|
final Size _remoteFrameBufferWidgetSize;
|
||||||
final Option<SendPort> _sendPort;
|
final Option<SendPort> _sendPort;
|
||||||
|
|
||||||
RemoteFrameBufferListenerDetector({
|
RemoteFrameBufferListenerDetector({
|
||||||
super.key,
|
super.key,
|
||||||
|
required final Image image,
|
||||||
|
required final Size remoteFrameBufferWidgetSize,
|
||||||
required final Option<SendPort> sendPort,
|
required final Option<SendPort> sendPort,
|
||||||
super.child,
|
super.child,
|
||||||
}) : _sendPort = sendPort;
|
}) : _image = image,
|
||||||
|
_remoteFrameBufferWidgetSize = remoteFrameBufferWidgetSize,
|
||||||
|
_sendPort = sendPort;
|
||||||
|
|
||||||
|
int oldX = 0;
|
||||||
|
int oldY = 0;
|
||||||
|
PointerDownEventListener? get onPointerDown =>
|
||||||
|
(final PointerDownEvent details) => _sendPort.match(
|
||||||
|
() {},
|
||||||
|
(final SendPort sendPort) {
|
||||||
|
int dx = (details.localPosition.dx /
|
||||||
|
_remoteFrameBufferWidgetSize.width *
|
||||||
|
_image.width)
|
||||||
|
.toInt();
|
||||||
|
int dy = (details.localPosition.dy /
|
||||||
|
_remoteFrameBufferWidgetSize.height *
|
||||||
|
_image.height)
|
||||||
|
.toInt();
|
||||||
|
sendPort.send(
|
||||||
|
RemoteFrameBufferIsolateSendMessage.pointerEvent(
|
||||||
|
button1Down: true,
|
||||||
|
button2Down: false,
|
||||||
|
button3Down: false,
|
||||||
|
button4Down: false,
|
||||||
|
button5Down: false,
|
||||||
|
button6Down: false,
|
||||||
|
button7Down: false,
|
||||||
|
button8Down: false,
|
||||||
|
x: dx,
|
||||||
|
y: dy,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
oldX = dx;
|
||||||
|
oldY = dy;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
PointerUpEventListener? get onPointerUp =>
|
||||||
|
(final PointerUpEvent details) => _sendPort.match(
|
||||||
|
() {},
|
||||||
|
(final SendPort sendPort) {
|
||||||
|
int dx = (details.localPosition.dx /
|
||||||
|
_remoteFrameBufferWidgetSize.width *
|
||||||
|
_image.width)
|
||||||
|
.toInt();
|
||||||
|
int dy = (details.localPosition.dy /
|
||||||
|
_remoteFrameBufferWidgetSize.height *
|
||||||
|
_image.height)
|
||||||
|
.toInt();
|
||||||
|
int diffX = oldX - dx;
|
||||||
|
int diffY = oldY - dy;
|
||||||
|
if(diffX > 5 && diffY > 5) {
|
||||||
|
dx = oldX;
|
||||||
|
dy = oldY;
|
||||||
|
}
|
||||||
|
sendPort.send(
|
||||||
|
RemoteFrameBufferIsolateSendMessage.pointerEvent(
|
||||||
|
button1Down: false,
|
||||||
|
button2Down: false,
|
||||||
|
button3Down: false,
|
||||||
|
button4Down: false,
|
||||||
|
button5Down: false,
|
||||||
|
button6Down: false,
|
||||||
|
button7Down: false,
|
||||||
|
button8Down: false,
|
||||||
|
x: dx,
|
||||||
|
y: dy,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
oldX = 0;
|
||||||
|
oldY = 0;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
PointerSignalEventListener? get onPointerSignal =>
|
PointerSignalEventListener? get onPointerSignal =>
|
||||||
|
|||||||
@@ -1,101 +0,0 @@
|
|||||||
import 'dart:isolate';
|
|
||||||
import 'dart:ui';
|
|
||||||
|
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
import 'package:flutter/widgets.dart' hide Image;
|
|
||||||
import 'remote_frame_buffer_isolate_messages.dart';
|
|
||||||
import 'package:fpdart/fpdart.dart';
|
|
||||||
|
|
||||||
class RemoteFrameBufferMouseDetector extends MouseRegion {
|
|
||||||
final Image _image;
|
|
||||||
final Size _remoteFrameBufferWidgetSize;
|
|
||||||
final Option<SendPort> _sendPort;
|
|
||||||
|
|
||||||
RemoteFrameBufferMouseDetector({
|
|
||||||
super.key,
|
|
||||||
required final Image image,
|
|
||||||
required final Size remoteFrameBufferWidgetSize,
|
|
||||||
required final Option<SendPort> sendPort,
|
|
||||||
super.child,
|
|
||||||
}) : _image = image,
|
|
||||||
_remoteFrameBufferWidgetSize = remoteFrameBufferWidgetSize,
|
|
||||||
_sendPort = sendPort;
|
|
||||||
|
|
||||||
// @override
|
|
||||||
// PointerHoverEventListener? get onHover =>
|
|
||||||
// (final PointerEvent details) => _sendPort.match(
|
|
||||||
// () {},
|
|
||||||
// (final SendPort sendPort) => sendPort.send(
|
|
||||||
// RemoteFrameBufferIsolateSendMessage.pointerEvent(
|
|
||||||
// button1Down: false,
|
|
||||||
// button2Down: false,
|
|
||||||
// button3Down: false,
|
|
||||||
// button4Down: false,
|
|
||||||
// button5Down: false,
|
|
||||||
// button6Down: false,
|
|
||||||
// button7Down: false,
|
|
||||||
// button8Down: false,
|
|
||||||
// x: (details.localPosition.dx /
|
|
||||||
// _remoteFrameBufferWidgetSize.width *
|
|
||||||
// _image.width)
|
|
||||||
// .toInt(),
|
|
||||||
// y: (details.localPosition.dy /
|
|
||||||
// _remoteFrameBufferWidgetSize.height *
|
|
||||||
// _image.height)
|
|
||||||
// .toInt(),
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// );
|
|
||||||
|
|
||||||
@override
|
|
||||||
PointerEnterEventListener? get onEnter =>
|
|
||||||
(final PointerEnterEvent details) => _sendPort.match(
|
|
||||||
() {},
|
|
||||||
(final SendPort sendPort) => sendPort.send(
|
|
||||||
RemoteFrameBufferIsolateSendMessage.pointerEvent(
|
|
||||||
button1Down: true,
|
|
||||||
button2Down: false,
|
|
||||||
button3Down: false,
|
|
||||||
button4Down: false,
|
|
||||||
button5Down: false,
|
|
||||||
button6Down: false,
|
|
||||||
button7Down: false,
|
|
||||||
button8Down: false,
|
|
||||||
x: (details.localPosition.dx /
|
|
||||||
_remoteFrameBufferWidgetSize.width *
|
|
||||||
_image.width)
|
|
||||||
.toInt(),
|
|
||||||
y: (details.localPosition.dy /
|
|
||||||
_remoteFrameBufferWidgetSize.height *
|
|
||||||
_image.height)
|
|
||||||
.toInt(),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
@override
|
|
||||||
PointerExitEventListener? get onExit =>
|
|
||||||
(final PointerExitEvent details) => _sendPort.match(
|
|
||||||
() {},
|
|
||||||
(final SendPort sendPort) => sendPort.send(
|
|
||||||
RemoteFrameBufferIsolateSendMessage.pointerEvent(
|
|
||||||
button1Down: false,
|
|
||||||
button2Down: false,
|
|
||||||
button3Down: false,
|
|
||||||
button4Down: false,
|
|
||||||
button5Down: false,
|
|
||||||
button6Down: false,
|
|
||||||
button7Down: false,
|
|
||||||
button8Down: false,
|
|
||||||
x: (details.localPosition.dx /
|
|
||||||
_remoteFrameBufferWidgetSize.width *
|
|
||||||
_image.width)
|
|
||||||
.toInt(),
|
|
||||||
y: (details.localPosition.dy /
|
|
||||||
_remoteFrameBufferWidgetSize.height *
|
|
||||||
_image.height)
|
|
||||||
.toInt(),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -141,6 +141,8 @@ class RemoteFrameBufferWidgetState extends State<RemoteFrameBufferWidget> {
|
|||||||
SizeTrackingWidget(
|
SizeTrackingWidget(
|
||||||
sizeValueNotifier: _sizeValueNotifier,
|
sizeValueNotifier: _sizeValueNotifier,
|
||||||
child: RemoteFrameBufferListenerDetector(
|
child: RemoteFrameBufferListenerDetector(
|
||||||
|
image: image,
|
||||||
|
remoteFrameBufferWidgetSize: MediaQuery.of(context).size,
|
||||||
sendPort: _isolateSendPort,
|
sendPort: _isolateSendPort,
|
||||||
child: RemoteFrameBufferGestureDetector(
|
child: RemoteFrameBufferGestureDetector(
|
||||||
image: image,
|
image: image,
|
||||||
|
|||||||
Reference in New Issue
Block a user