mirror of
https://github.com/rustdesk/rustdesk.git
synced 2024-12-15 12:09:08 +08:00
61 lines
1.6 KiB
Dart
61 lines
1.6 KiB
Dart
|
import 'package:flutter/material.dart';
|
||
|
import 'package:flutter/services.dart';
|
||
|
|
||
|
import '../../models/input_model.dart';
|
||
|
|
||
|
class RawKeyFocusScope extends StatelessWidget {
|
||
|
final FocusNode? focusNode;
|
||
|
final ValueChanged<bool>? onFocusChange;
|
||
|
final InputModel inputModel;
|
||
|
final Widget child;
|
||
|
|
||
|
RawKeyFocusScope(
|
||
|
{this.focusNode,
|
||
|
this.onFocusChange,
|
||
|
required this.inputModel,
|
||
|
required this.child});
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
return FocusScope(
|
||
|
autofocus: true,
|
||
|
child: Focus(
|
||
|
autofocus: true,
|
||
|
canRequestFocus: true,
|
||
|
focusNode: focusNode,
|
||
|
onFocusChange: onFocusChange,
|
||
|
onKey: inputModel.handleRawKeyEvent,
|
||
|
child: child));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class RawPointerMouseRegion extends StatelessWidget {
|
||
|
final InputModel inputModel;
|
||
|
final Widget child;
|
||
|
final MouseCursor? cursor;
|
||
|
final PointerEnterEventListener? onEnter;
|
||
|
final PointerExitEventListener? onExit;
|
||
|
|
||
|
RawPointerMouseRegion(
|
||
|
{this.onEnter,
|
||
|
this.onExit,
|
||
|
this.cursor,
|
||
|
required this.inputModel,
|
||
|
required this.child});
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
return Listener(
|
||
|
onPointerHover: inputModel.onPointHoverImage,
|
||
|
onPointerDown: inputModel.onPointDownImage,
|
||
|
onPointerUp: inputModel.onPointUpImage,
|
||
|
onPointerMove: inputModel.onPointMoveImage,
|
||
|
onPointerSignal: inputModel.onPointerSignalImage,
|
||
|
child: MouseRegion(
|
||
|
cursor: cursor ?? MouseCursor.defer,
|
||
|
onEnter: onEnter,
|
||
|
onExit: onExit,
|
||
|
child: child));
|
||
|
}
|
||
|
}
|