2024-04-11 18:26:28 +08:00

35 lines
1.1 KiB
Dart

import 'package:flutter/material.dart';
// https://github.com/flutter/flutter/issues/63946#issuecomment-1000442747
// - By: https://github.com/PaulBout1
class AllwaysScrollableFixedPositionScrollPhysics extends ScrollPhysics {
const AllwaysScrollableFixedPositionScrollPhysics({ScrollPhysics? parent})
: super(parent: parent);
@override
AllwaysScrollableFixedPositionScrollPhysics applyTo(ScrollPhysics? ancestor) {
return AllwaysScrollableFixedPositionScrollPhysics(parent: buildParent(ancestor));
}
@override
double adjustPositionForNewDimensions({
required ScrollMetrics oldPosition,
required ScrollMetrics newPosition,
required bool isScrolling,
required double velocity,
}) {
if (newPosition.extentBefore == 0) {
return super.adjustPositionForNewDimensions(
oldPosition: oldPosition,
newPosition: newPosition,
isScrolling: isScrolling,
velocity: velocity,
);
}
return newPosition.maxScrollExtent - oldPosition.extentAfter;
}
@override
bool shouldAcceptUserOffset(ScrollMetrics position) => true;
}