app-starlock/lib/mine/about/debug/utils/scrollable.dart
2024-05-18 09:37:50 +08:00

35 lines
1.1 KiB
Dart
Executable File

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;
}