From 98d66ed43cf0f3006aff97d66b23731d495b6882 Mon Sep 17 00:00:00 2001 From: fufesou Date: Sun, 14 Aug 2022 11:20:52 +0800 Subject: [PATCH] flutter_desktop: fix scroll event to rust Signed-off-by: fufesou --- flutter/lib/desktop/pages/remote_page.dart | 62 ++++++++++++++++------ 1 file changed, 46 insertions(+), 16 deletions(-) diff --git a/flutter/lib/desktop/pages/remote_page.dart b/flutter/lib/desktop/pages/remote_page.dart index 62ad5ee0b..b410969ca 100644 --- a/flutter/lib/desktop/pages/remote_page.dart +++ b/flutter/lib/desktop/pages/remote_page.dart @@ -491,8 +491,8 @@ class _RemotePageState extends State void _onPointerSignalImage(PointerSignalEvent e) { if (e is PointerScrollEvent) { - var dx = e.scrollDelta.dx; - var dy = e.scrollDelta.dy; + var dx = e.scrollDelta.dx.toInt(); + var dy = e.scrollDelta.dy.toInt(); if (dx > 0) dx = -1; else if (dx < 0) dx = 1; @@ -906,24 +906,54 @@ class ImagePaint extends StatelessWidget { } Widget _buildCrossScrollbar(Widget child) { - return Scrollbar( - controller: _vertical, - thumbVisibility: true, - trackVisibility: true, - child: Scrollbar( - controller: _horizontal, + debugPrint( + 'REMOVE ME ==================================== _buildCrossScrollbar ${cursorOverImage.value}'); + // final physicsVertical = + // cursorOverImage.value ? const NeverScrollableScrollPhysics() : null; + // final physicsHorizontal = + // cursorOverImage.value ? const NeverScrollableScrollPhysics() : null; + + if (cursorOverImage.value) { + return Scrollbar( + controller: _vertical, thumbVisibility: true, trackVisibility: true, - notificationPredicate: (notif) => notif.depth == 1, - child: SingleChildScrollView( - controller: _vertical, + child: Scrollbar( + controller: _horizontal, + thumbVisibility: true, + trackVisibility: true, + notificationPredicate: (notif) => notif.depth == 1, child: SingleChildScrollView( - controller: _horizontal, - scrollDirection: Axis.horizontal, - child: child, + controller: _vertical, + physics: const NeverScrollableScrollPhysics(), + child: SingleChildScrollView( + controller: _horizontal, + scrollDirection: Axis.horizontal, + physics: const NeverScrollableScrollPhysics(), + child: child, + ), ), - ), - )); + )); + } else { + return Scrollbar( + controller: _vertical, + thumbVisibility: true, + trackVisibility: true, + child: Scrollbar( + controller: _horizontal, + thumbVisibility: true, + trackVisibility: true, + notificationPredicate: (notif) => notif.depth == 1, + child: SingleChildScrollView( + controller: _vertical, + child: SingleChildScrollView( + controller: _horizontal, + scrollDirection: Axis.horizontal, + child: child, + ), + ), + )); + } } Widget _buildListener(Widget child) {