35 lines
1.1 KiB
Dart
Executable File
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;
|
|
} |