mirror of
https://github.com/rustdesk/rustdesk.git
synced 2024-12-18 13:37:52 +08:00
remove custom guesture
This commit is contained in:
parent
d116251742
commit
f86673ebcb
@ -1,104 +0,0 @@
|
|||||||
import 'package:flutter/gestures.dart';
|
|
||||||
|
|
||||||
class MultiTouchGestureRecognizer extends MultiTapGestureRecognizer {
|
|
||||||
MultiTouchGestureRecognizerCallback onMultiTap;
|
|
||||||
var numberOfTouches = 0;
|
|
||||||
|
|
||||||
MultiTouchGestureRecognizer() {
|
|
||||||
this
|
|
||||||
..onTapDown = addTouch
|
|
||||||
..onTapUp = removeTouch
|
|
||||||
..onTapCancel = cancelTouch
|
|
||||||
..onTap = captureDefaultTap;
|
|
||||||
}
|
|
||||||
|
|
||||||
void addTouch(int pointer, TapDownDetails details) {
|
|
||||||
numberOfTouches++;
|
|
||||||
onMultiTap(numberOfTouches, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void removeTouch(int pointer, TapUpDetails details) {
|
|
||||||
numberOfTouches--;
|
|
||||||
onMultiTap(numberOfTouches, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cancelTouch(int pointer) {
|
|
||||||
numberOfTouches = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void captureDefaultTap(int pointer) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef MultiTouchGestureRecognizerCallback = void Function(
|
|
||||||
int touchCount, bool addOrRemove);
|
|
||||||
|
|
||||||
typedef OnUpdate(DragUpdateDetails details);
|
|
||||||
|
|
||||||
class CustomMultiDrag extends Drag {
|
|
||||||
CustomMultiDrag({this.events, this.offset});
|
|
||||||
|
|
||||||
List<PointerDownEvent> events;
|
|
||||||
Offset offset;
|
|
||||||
|
|
||||||
@override
|
|
||||||
void update(DragUpdateDetails details) {
|
|
||||||
var n = events.length;
|
|
||||||
print('$n $details');
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void end(DragEndDetails details) {
|
|
||||||
super.end(details);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef OnDisposeState();
|
|
||||||
|
|
||||||
// clone _ImmediatePointerState
|
|
||||||
class CustomPointerState extends MultiDragPointerState {
|
|
||||||
final OnDisposeState onDisposeState;
|
|
||||||
CustomPointerState(Offset initialPosition, PointerDeviceKind kind,
|
|
||||||
{this.onDisposeState})
|
|
||||||
: super(initialPosition, kind);
|
|
||||||
|
|
||||||
@override
|
|
||||||
void checkForResolutionAfterMove() {
|
|
||||||
assert(pendingDelta != null);
|
|
||||||
if (pendingDelta.distance > computeHitSlop(kind))
|
|
||||||
resolve(GestureDisposition.accepted);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void accepted(GestureMultiDragStartCallback starter) {
|
|
||||||
starter(initialPosition);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void dispose() {
|
|
||||||
onDisposeState.call();
|
|
||||||
super.dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// clone ImmediateMultiDragGestureRecognizer
|
|
||||||
class CustomMultiDragGestureRecognizer
|
|
||||||
extends MultiDragGestureRecognizer<CustomPointerState> {
|
|
||||||
var events = List<PointerDownEvent>();
|
|
||||||
|
|
||||||
/// Create a gesture recognizer for tracking multiple pointers at once.
|
|
||||||
CustomMultiDragGestureRecognizer({
|
|
||||||
Object debugOwner,
|
|
||||||
PointerDeviceKind kind,
|
|
||||||
}) : super(debugOwner: debugOwner, kind: kind);
|
|
||||||
|
|
||||||
@override
|
|
||||||
CustomPointerState createNewPointerState(PointerDownEvent event) {
|
|
||||||
events.add(event);
|
|
||||||
return CustomPointerState(event.position, event.kind, onDisposeState: () {
|
|
||||||
events.remove(event);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get debugDescription => 'custom_multidrag';
|
|
||||||
}
|
|
@ -1,5 +1,4 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/gestures.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'dart:ui' as ui;
|
import 'dart:ui' as ui;
|
||||||
@ -9,7 +8,6 @@ import 'dart:math' as math;
|
|||||||
import 'package:tuple/tuple.dart';
|
import 'package:tuple/tuple.dart';
|
||||||
import 'package:wakelock/wakelock.dart';
|
import 'package:wakelock/wakelock.dart';
|
||||||
import 'common.dart';
|
import 'common.dart';
|
||||||
import 'drag.dart';
|
|
||||||
import 'model.dart';
|
import 'model.dart';
|
||||||
|
|
||||||
class RemotePage extends StatefulWidget {
|
class RemotePage extends StatefulWidget {
|
||||||
@ -26,7 +24,6 @@ class _RemotePageState extends State<RemotePage> {
|
|||||||
Timer _interval;
|
Timer _interval;
|
||||||
bool _showBar = true;
|
bool _showBar = true;
|
||||||
double _bottom = 0;
|
double _bottom = 0;
|
||||||
var _scaleMode = false;
|
|
||||||
double _xOffset = 0;
|
double _xOffset = 0;
|
||||||
double _yOffset = 0;
|
double _yOffset = 0;
|
||||||
double _scale = 1;
|
double _scale = 1;
|
||||||
@ -167,15 +164,11 @@ class _RemotePageState extends State<RemotePage> {
|
|||||||
position:
|
position:
|
||||||
RelativeRect.fromLTRB(x + 20, y + 20, x + 20, y + 20),
|
RelativeRect.fromLTRB(x + 20, y + 20, x + 20, y + 20),
|
||||||
items: [
|
items: [
|
||||||
PopupMenuItem<String>(
|
PopupMenuItem<String>(child: Text('Test'), value: 'mode'),
|
||||||
child: Text(_scaleMode ? 'Pan Mode' : 'Scale Mode'),
|
|
||||||
value: 'mode'),
|
|
||||||
],
|
],
|
||||||
elevation: 8.0,
|
elevation: 8.0,
|
||||||
);
|
);
|
||||||
if (value == 'mode') {
|
if (value == 'mode') {}
|
||||||
setState(() => _scaleMode = !_scaleMode);
|
|
||||||
}
|
|
||||||
}();
|
}();
|
||||||
},
|
},
|
||||||
onDoubleTap: () {
|
onDoubleTap: () {
|
||||||
@ -231,104 +224,6 @@ class _RemotePageState extends State<RemotePage> {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<Type, GestureRecognizerFactory> buildGuestures() {
|
|
||||||
var m = {
|
|
||||||
TapGestureRecognizer:
|
|
||||||
GestureRecognizerFactoryWithHandlers<TapGestureRecognizer>(
|
|
||||||
() => TapGestureRecognizer(),
|
|
||||||
(TapGestureRecognizer instance) {
|
|
||||||
instance.onTap = () {
|
|
||||||
print('tap');
|
|
||||||
};
|
|
||||||
},
|
|
||||||
),
|
|
||||||
MultiTouchGestureRecognizer:
|
|
||||||
GestureRecognizerFactoryWithHandlers<MultiTouchGestureRecognizer>(
|
|
||||||
() => MultiTouchGestureRecognizer(),
|
|
||||||
(MultiTouchGestureRecognizer instance) {
|
|
||||||
instance.onMultiTap = (
|
|
||||||
touchCount,
|
|
||||||
addOrRemove,
|
|
||||||
) {
|
|
||||||
if (touchCount == 3 && addOrRemove) {
|
|
||||||
setState(() => _scaleMode = !_scaleMode);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
),
|
|
||||||
CustomMultiDragGestureRecognizer: GestureRecognizerFactoryWithHandlers<
|
|
||||||
CustomMultiDragGestureRecognizer>(
|
|
||||||
() => CustomMultiDragGestureRecognizer(),
|
|
||||||
(CustomMultiDragGestureRecognizer instance) {
|
|
||||||
instance
|
|
||||||
..onStart = (offset) {
|
|
||||||
return CustomMultiDrag(events: instance.events, offset: offset);
|
|
||||||
};
|
|
||||||
},
|
|
||||||
),
|
|
||||||
LongPressGestureRecognizer:
|
|
||||||
GestureRecognizerFactoryWithHandlers<LongPressGestureRecognizer>(
|
|
||||||
() => LongPressGestureRecognizer(),
|
|
||||||
(LongPressGestureRecognizer instance) {
|
|
||||||
var x = 0.0;
|
|
||||||
var y = 0.0;
|
|
||||||
instance
|
|
||||||
..onLongPressStart = (details) {
|
|
||||||
x = details.globalPosition.dx;
|
|
||||||
y = details.globalPosition.dy;
|
|
||||||
}
|
|
||||||
..onLongPress = () {
|
|
||||||
() async {
|
|
||||||
print('long press: $x $y');
|
|
||||||
var value = await showMenu(
|
|
||||||
context: context,
|
|
||||||
position:
|
|
||||||
RelativeRect.fromLTRB(x + 20, y + 20, x + 20, y + 20),
|
|
||||||
items: [
|
|
||||||
PopupMenuItem<String>(
|
|
||||||
child: Text(_scaleMode ? 'Pan Mode' : 'Scale Mode'),
|
|
||||||
value: 'mode'),
|
|
||||||
],
|
|
||||||
elevation: 8.0,
|
|
||||||
);
|
|
||||||
if (value == 'mode') {
|
|
||||||
setState(() => _scaleMode = !_scaleMode);
|
|
||||||
}
|
|
||||||
}();
|
|
||||||
};
|
|
||||||
},
|
|
||||||
),
|
|
||||||
ScaleGestureRecognizer:
|
|
||||||
GestureRecognizerFactoryWithHandlers<ScaleGestureRecognizer>(
|
|
||||||
() => ScaleGestureRecognizer(),
|
|
||||||
(ScaleGestureRecognizer instance) {
|
|
||||||
instance
|
|
||||||
..onStart = (detail) {
|
|
||||||
print('scale start');
|
|
||||||
}
|
|
||||||
..onUpdate = (detail) {
|
|
||||||
print('$detail');
|
|
||||||
};
|
|
||||||
},
|
|
||||||
),
|
|
||||||
DoubleTapGestureRecognizer:
|
|
||||||
GestureRecognizerFactoryWithHandlers<DoubleTapGestureRecognizer>(
|
|
||||||
() => DoubleTapGestureRecognizer(),
|
|
||||||
(DoubleTapGestureRecognizer instance) {
|
|
||||||
instance.onDoubleTap = () {
|
|
||||||
print('double tap');
|
|
||||||
};
|
|
||||||
},
|
|
||||||
),
|
|
||||||
};
|
|
||||||
if (_scaleMode) {
|
|
||||||
m.remove(CustomMultiDragGestureRecognizer);
|
|
||||||
} else {
|
|
||||||
m.remove(ScaleGestureRecognizer);
|
|
||||||
}
|
|
||||||
return m;
|
|
||||||
}
|
|
||||||
|
|
||||||
void close() {
|
void close() {
|
||||||
msgbox('', 'Close', 'Are you sure to close the connection?', context);
|
msgbox('', 'Close', 'Are you sure to close the connection?', context);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user