30 lines
903 B
Dart
30 lines
903 B
Dart
import 'package:flutter/gestures.dart';
|
|
import 'package:flutter/widgets.dart';
|
|
|
|
// TODO TLAD merge with `MagnifierScrollerPhysics`
|
|
class SloppyScrollPhysics extends ScrollPhysics {
|
|
final DeviceGestureSettings? gestureSettings;
|
|
|
|
// in [0, 1]
|
|
// 0: most reactive but will not let Magnifier recognizers accept gestures
|
|
// 1: less reactive but gives the most leeway to Magnifier recognizers
|
|
final double touchSlopFactor;
|
|
|
|
const SloppyScrollPhysics({
|
|
required this.gestureSettings,
|
|
this.touchSlopFactor = 1,
|
|
super.parent,
|
|
});
|
|
|
|
@override
|
|
SloppyScrollPhysics applyTo(ScrollPhysics? ancestor) {
|
|
return SloppyScrollPhysics(
|
|
gestureSettings: gestureSettings,
|
|
touchSlopFactor: touchSlopFactor,
|
|
parent: buildParent(ancestor),
|
|
);
|
|
}
|
|
|
|
@override
|
|
double get dragStartDistanceMotionThreshold => (gestureSettings?.touchSlop ?? kTouchSlop) * touchSlopFactor;
|
|
}
|