mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-12-13 11:35:56 +00:00
feat: make file manager draggable
This commit is contained in:
53
flutter/lib/desktop/widgets/dragable_divider.dart
Normal file
53
flutter/lib/desktop/widgets/dragable_divider.dart
Normal file
@@ -0,0 +1,53 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/src/widgets/framework.dart';
|
||||
import 'package:flutter/src/widgets/placeholder.dart';
|
||||
|
||||
class DraggableDivider extends StatefulWidget {
|
||||
final Axis axis;
|
||||
final double thickness;
|
||||
final Color color;
|
||||
final Function(double)? onPointerMove;
|
||||
final VoidCallback? onHover;
|
||||
final EdgeInsets padding;
|
||||
const DraggableDivider({
|
||||
super.key,
|
||||
this.axis = Axis.horizontal,
|
||||
this.thickness = 1.0,
|
||||
this.color = const Color.fromARGB(200, 177, 175, 175),
|
||||
this.onPointerMove,
|
||||
this.padding = const EdgeInsets.symmetric(horizontal: 1.0),
|
||||
this.onHover,
|
||||
});
|
||||
|
||||
@override
|
||||
State<DraggableDivider> createState() => _DraggableDividerState();
|
||||
}
|
||||
|
||||
class _DraggableDividerState extends State<DraggableDivider> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Listener(
|
||||
onPointerMove: (event) {
|
||||
final dl =
|
||||
widget.axis == Axis.horizontal ? event.localDelta.dy : event.localDelta.dx;
|
||||
widget.onPointerMove?.call(dl);
|
||||
},
|
||||
onPointerHover: (event) => widget.onHover?.call(),
|
||||
child: MouseRegion(
|
||||
cursor: SystemMouseCursors.resizeLeftRight,
|
||||
child: Padding(
|
||||
padding: widget.padding,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(color: widget.color),
|
||||
width: widget.axis == Axis.horizontal
|
||||
? double.infinity
|
||||
: widget.thickness,
|
||||
height: widget.axis == Axis.horizontal
|
||||
? widget.thickness
|
||||
: double.infinity,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user