snapToCorner method
void
snapToCorner()
Snaps the floating widget to the nearest corner.
Implementation
void snapToCorner() {
double dx = position.dx;
double dy = position.dy;
final corners = [
Offset(padding, _mediaQuery.viewPadding.top + topMargin),
Offset(
screenSize.width - padding - _collapsedSize.width,
_mediaQuery.viewPadding.top + topMargin,
),
Offset(
padding,
screenSize.height -
_collapsedSize.height -
_mediaQuery.viewPadding.bottom -
bottomMargin,
),
Offset(
screenSize.width - padding - _collapsedSize.width,
screenSize.height -
_collapsedSize.height -
_mediaQuery.viewPadding.bottom -
bottomMargin,
),
];
final closestCorner = corners.reduce((a, b) {
final distanceA = (a.dx - dx).abs() + (a.dy - dy).abs();
final distanceB = (b.dx - dx).abs() + (b.dy - dy).abs();
return distanceA < distanceB ? a : b;
});
_position = closestCorner;
notifyListeners();
}