How to detect when the user swipe vertically either upward on downward?
I have been using swipedetector package, but now, it gives me exceptions like
The getter 'globalPosition' was called on null.
How to detect when the user swipe vertically either upward on downward?
I have been using swipedetector package, but now, it gives me exceptions like
The getter 'globalPosition' was called on null.
import 'package:flutter/material.dart';
class SwipeDetectorExample extends StatefulWidget {
final Function() onSwipeUp;
final Function() onSwipeDown;
final Widget child;
SwipeDetectorExample({this.onSwipeUp, this.onSwipeDown, this.child});
@override
_SwipeDetectorExampleState createState() => _SwipeDetectorExampleState();
}
class _SwipeDetectorExampleState extends State<SwipeDetectorExample> {
//Vertical drag details
DragStartDetails startVerticalDragDetails;
DragUpdateDetails updateVerticalDragDetails;
@override
Widget build(BuildContext context) {
return GestureDetector(
onVerticalDragStart: (dragDetails) {
startVerticalDragDetails = dragDetails;
},
onVerticalDragUpdate: (dragDetails) {
updateVerticalDragDetails = dragDetails;
},
onVerticalDragEnd: (endDetails) {
double dx = updateVerticalDragDetails.globalPosition.dx -
startVerticalDragDetails.globalPosition.dx;
double dy = updateVerticalDragDetails.globalPosition.dy -
startVerticalDragDetails.globalPosition.dy;
double velocity = endDetails.primaryVelocity;
//Convert values to be positive
if (dx < 0) dx = -dx;
if (dy < 0) dy = -dy;
if (velocity < 0) {
widget.onSwipeUp();
} else {
widget.onSwipeDown();
}
},
child: widget.child);
}
}
I ran into the same problem today, try running flutter clean
, and hot restart your app.
If this doesn't help one can always use Gesture Detector as M.Ali answered. In my case a simple hot restart fixed the problem.