Merge pull request #794 from Kingtous/flutter_desktop
fix: use multi provider for canvas
This commit is contained in:
		
						commit
						593bdda990
					
				| @ -241,52 +241,61 @@ class _RemotePageState extends State<RemotePage> with WindowListener { | |||||||
| 
 | 
 | ||||||
|     return WillPopScope( |     return WillPopScope( | ||||||
|       onWillPop: () async { |       onWillPop: () async { | ||||||
|         clientClose(); |           clientClose(); | ||||||
|         return false; |           return false; | ||||||
|       }, |         }, | ||||||
|       child: getRawPointerAndKeyBody( |         child: MultiProvider( | ||||||
|           keyboard, |           providers: [ | ||||||
|           Scaffold( |             ChangeNotifierProvider.value(value: _ffi.ffiModel), | ||||||
|               // resizeToAvoidBottomInset: true, |             ChangeNotifierProvider.value(value: _ffi.imageModel), | ||||||
|               floatingActionButton: !showActionButton |             ChangeNotifierProvider.value(value: _ffi.cursorModel), | ||||||
|                   ? null |             ChangeNotifierProvider.value(value: _ffi.canvasModel), | ||||||
|                   : FloatingActionButton( |           ], | ||||||
|                       mini: !hideKeyboard, |           child: getRawPointerAndKeyBody( | ||||||
|                       child: Icon( |               keyboard, | ||||||
|                           hideKeyboard ? Icons.expand_more : Icons.expand_less), |               Scaffold( | ||||||
|                       backgroundColor: MyTheme.accent, |                   // resizeToAvoidBottomInset: true, | ||||||
|                       onPressed: () { |                   floatingActionButton: !showActionButton | ||||||
|                         setState(() { |                       ? null | ||||||
|                           if (hideKeyboard) { |                       : FloatingActionButton( | ||||||
|                             _showEdit = false; |                           mini: !hideKeyboard, | ||||||
|                             _ffi.invokeMethod("enable_soft_keyboard", false); |                           child: Icon(hideKeyboard | ||||||
|                             _mobileFocusNode.unfocus(); |                               ? Icons.expand_more | ||||||
|                             _physicalFocusNode.requestFocus(); |                               : Icons.expand_less), | ||||||
|                           } else { |                           backgroundColor: MyTheme.accent, | ||||||
|                             _showBar = !_showBar; |                           onPressed: () { | ||||||
|                           } |                             setState(() { | ||||||
|                         }); |                               if (hideKeyboard) { | ||||||
|                       }), |                                 _showEdit = false; | ||||||
|               bottomNavigationBar: _showBar && pi.displays.length > 0 |                                 _ffi.invokeMethod( | ||||||
|                   ? getBottomAppBar(keyboard) |                                     "enable_soft_keyboard", false); | ||||||
|                   : null, |                                 _mobileFocusNode.unfocus(); | ||||||
|               body: Overlay( |                                 _physicalFocusNode.requestFocus(); | ||||||
|                 initialEntries: [ |                               } else { | ||||||
|                   OverlayEntry(builder: (context) { |                                 _showBar = !_showBar; | ||||||
|                     return Container( |                               } | ||||||
|                         color: Colors.black, |                             }); | ||||||
|                         child: isWebDesktop |                           }), | ||||||
|                             ? getBodyForDesktopWithListener(keyboard) |                   bottomNavigationBar: _showBar && pi.displays.length > 0 | ||||||
|                             : SafeArea( |                       ? getBottomAppBar(keyboard) | ||||||
|                                 child: Container( |                       : null, | ||||||
|                                     color: MyTheme.canvasColor, |                   body: Overlay( | ||||||
|                                     child: _isPhysicalMouse |                     initialEntries: [ | ||||||
|                                         ? getBodyForMobile() |                       OverlayEntry(builder: (context) { | ||||||
|                                         : getBodyForMobileWithGesture()))); |                         return Container( | ||||||
|                   }) |                             color: Colors.black, | ||||||
|                 ], |                             child: isWebDesktop | ||||||
|               ))), |                                 ? getBodyForDesktopWithListener(keyboard) | ||||||
|     ); |                                 : SafeArea( | ||||||
|  |                                     child: Container( | ||||||
|  |                                         color: MyTheme.canvasColor, | ||||||
|  |                                         child: _isPhysicalMouse | ||||||
|  |                                             ? getBodyForMobile() | ||||||
|  |                                             : getBodyForMobileWithGesture()))); | ||||||
|  |                       }) | ||||||
|  |                     ], | ||||||
|  |                   ))), | ||||||
|  |         )); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   Widget getRawPointerAndKeyBody(bool keyboard, Widget child) { |   Widget getRawPointerAndKeyBody(bool keyboard, Widget child) { | ||||||
| @ -916,13 +925,12 @@ class ImagePaint extends StatelessWidget { | |||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   Widget build(BuildContext context) { |   Widget build(BuildContext context) { | ||||||
|     final m = ffi(this.id).imageModel; |     final m = Provider.of<ImageModel>(context); | ||||||
|     final c = ffi(this.id).canvasModel; |     final c = Provider.of<CanvasModel>(context); | ||||||
|     final adjust = ffi(this.id).cursorModel.adjustForKeyboard(); |  | ||||||
|     var s = c.scale; |     var s = c.scale; | ||||||
|     return CustomPaint( |     return CustomPaint( | ||||||
|       painter: new ImagePainter( |       painter: | ||||||
|           image: m.image, x: c.x / s, y: (c.y - adjust) / s, scale: s), |           new ImagePainter(image: m.image, x: c.x / s, y: c.y / s, scale: s), | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @ -934,15 +942,15 @@ class CursorPaint extends StatelessWidget { | |||||||
| 
 | 
 | ||||||
|   @override |   @override | ||||||
|   Widget build(BuildContext context) { |   Widget build(BuildContext context) { | ||||||
|     final m = ffi(this.id).cursorModel; |     final m = Provider.of<CursorModel>(context); | ||||||
|     final c = ffi(this.id).canvasModel; |     final c = Provider.of<CanvasModel>(context); | ||||||
|     final adjust = ffi(this.id).cursorModel.adjustForKeyboard(); |     // final adjust = m.adjustForKeyboard(); | ||||||
|     var s = c.scale; |     var s = c.scale; | ||||||
|     return CustomPaint( |     return CustomPaint( | ||||||
|       painter: new ImagePainter( |       painter: new ImagePainter( | ||||||
|           image: m.image, |           image: m.image, | ||||||
|           x: m.x * s - m.hotx + c.x, |           x: m.x * s - m.hotx + c.x, | ||||||
|           y: m.y * s - m.hoty + c.y - adjust, |           y: m.y * s - m.hoty + c.y, | ||||||
|           scale: 1), |           scale: 1), | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user