75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.1 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;
 | |
|   final PointerDownEventListener? onPointerDown;
 | |
|   final PointerUpEventListener? onPointerUp;
 | |
| 
 | |
|   RawPointerMouseRegion(
 | |
|       {this.onEnter,
 | |
|       this.onExit,
 | |
|       this.cursor,
 | |
|       this.onPointerDown,
 | |
|       this.onPointerUp,
 | |
|       required this.inputModel,
 | |
|       required this.child});
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return Listener(
 | |
|         onPointerHover: inputModel.onPointHoverImage,
 | |
|         onPointerDown: (evt) {
 | |
|           onPointerDown?.call(evt);
 | |
|           inputModel.onPointDownImage(evt);
 | |
|         },
 | |
|         onPointerUp: (evt) {
 | |
|           onPointerUp?.call(evt);
 | |
|           inputModel.onPointUpImage(evt);
 | |
|         },
 | |
|         onPointerMove: inputModel.onPointMoveImage,
 | |
|         onPointerSignal: inputModel.onPointerSignalImage,
 | |
|         onPointerPanZoomStart: inputModel.onPointerPanZoomStart,
 | |
|         onPointerPanZoomUpdate: inputModel.onPointerPanZoomUpdate,
 | |
|         onPointerPanZoomEnd: inputModel.onPointerPanZoomEnd,
 | |
|         child: MouseRegion(
 | |
|             cursor: cursor ?? MouseCursor.defer,
 | |
|             onEnter: onEnter,
 | |
|             onExit: onExit,
 | |
|             child: child));
 | |
|   }
 | |
| }
 |