refact the dragbox under the remote menubar
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
b491a23f41
commit
3071bd84d0
@ -327,6 +327,13 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
|
|||||||
initState() {
|
initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
|
||||||
|
Future.delayed(Duration.zero, () async {
|
||||||
|
_fractionX.value = double.tryParse(await bind.sessionGetOption(
|
||||||
|
id: widget.id, arg: 'remote-menubar-drag-x') ??
|
||||||
|
'0.5') ??
|
||||||
|
0.5;
|
||||||
|
});
|
||||||
|
|
||||||
_debouncerHide = Debouncer<int>(
|
_debouncerHide = Debouncer<int>(
|
||||||
Duration(milliseconds: 5000),
|
Duration(milliseconds: 5000),
|
||||||
onChanged: _debouncerHideProc,
|
onChanged: _debouncerHideProc,
|
||||||
@ -380,6 +387,7 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
|
|||||||
elevation: _MenubarTheme.elevation,
|
elevation: _MenubarTheme.elevation,
|
||||||
shadowColor: MyTheme.color(context).shadow,
|
shadowColor: MyTheme.color(context).shadow,
|
||||||
child: _DraggableShowHide(
|
child: _DraggableShowHide(
|
||||||
|
id: widget.id,
|
||||||
dragging: _dragging,
|
dragging: _dragging,
|
||||||
fractionX: _fractionX,
|
fractionX: _fractionX,
|
||||||
show: show,
|
show: show,
|
||||||
@ -1501,11 +1509,13 @@ class RdoMenuButton<T> extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _DraggableShowHide extends StatefulWidget {
|
class _DraggableShowHide extends StatefulWidget {
|
||||||
|
final String id;
|
||||||
final RxDouble fractionX;
|
final RxDouble fractionX;
|
||||||
final RxBool dragging;
|
final RxBool dragging;
|
||||||
final RxBool show;
|
final RxBool show;
|
||||||
const _DraggableShowHide({
|
const _DraggableShowHide({
|
||||||
Key? key,
|
Key? key,
|
||||||
|
required this.id,
|
||||||
required this.fractionX,
|
required this.fractionX,
|
||||||
required this.dragging,
|
required this.dragging,
|
||||||
required this.show,
|
required this.show,
|
||||||
@ -1518,6 +1528,30 @@ class _DraggableShowHide extends StatefulWidget {
|
|||||||
class _DraggableShowHideState extends State<_DraggableShowHide> {
|
class _DraggableShowHideState extends State<_DraggableShowHide> {
|
||||||
Offset position = Offset.zero;
|
Offset position = Offset.zero;
|
||||||
Size size = Size.zero;
|
Size size = Size.zero;
|
||||||
|
double left = 0.0;
|
||||||
|
double right = 1.0;
|
||||||
|
|
||||||
|
@override
|
||||||
|
initState() {
|
||||||
|
super.initState();
|
||||||
|
|
||||||
|
final confLeft = double.tryParse(
|
||||||
|
bind.mainGetLocalOption(key: 'remote-menubar-drag-left'));
|
||||||
|
if (confLeft == null) {
|
||||||
|
bind.mainSetLocalOption(
|
||||||
|
key: 'remote-menubar-drag-left', value: left.toString());
|
||||||
|
} else {
|
||||||
|
left = confLeft;
|
||||||
|
}
|
||||||
|
final confRight = double.tryParse(
|
||||||
|
bind.mainGetLocalOption(key: 'remote-menubar-drag-right'));
|
||||||
|
if (confRight == null) {
|
||||||
|
bind.mainSetLocalOption(
|
||||||
|
key: 'remote-menubar-drag-right', value: right.toString());
|
||||||
|
} else {
|
||||||
|
right = confRight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Widget _buildDraggable(BuildContext context) {
|
Widget _buildDraggable(BuildContext context) {
|
||||||
return Draggable(
|
return Draggable(
|
||||||
@ -1541,12 +1575,17 @@ class _DraggableShowHideState extends State<_DraggableShowHide> {
|
|||||||
final mediaSize = MediaQueryData.fromWindow(ui.window).size;
|
final mediaSize = MediaQueryData.fromWindow(ui.window).size;
|
||||||
widget.fractionX.value +=
|
widget.fractionX.value +=
|
||||||
(details.offset.dx - position.dx) / (mediaSize.width - size.width);
|
(details.offset.dx - position.dx) / (mediaSize.width - size.width);
|
||||||
if (widget.fractionX.value < 0.35) {
|
if (widget.fractionX.value < left) {
|
||||||
widget.fractionX.value = 0.35;
|
widget.fractionX.value = left;
|
||||||
}
|
}
|
||||||
if (widget.fractionX.value > 0.65) {
|
if (widget.fractionX.value > right) {
|
||||||
widget.fractionX.value = 0.65;
|
widget.fractionX.value = right;
|
||||||
}
|
}
|
||||||
|
bind.sessionPeerOption(
|
||||||
|
id: widget.id,
|
||||||
|
name: 'remote-menubar-drag-x',
|
||||||
|
value: widget.fractionX.value.toString(),
|
||||||
|
);
|
||||||
widget.dragging.value = false;
|
widget.dragging.value = false;
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user