performAlignment method
Animates alignment of the appbar by a given scroll position and a given appbar alignment behavior.
Implementation
void performAlignment(AppBarAlignmentCommand command) {
final start = pixels;
final end =
command == AppBarAlignmentCommand.shrink ? maxExtent : minExtent;
/// If the target pixels and the current pixels are the same,
/// a appbar is no need to align.
if ((pixels - end).abs() < precisionErrorTolerance) {
return;
}
_animation?.dispose();
_animation =
AnimationController(vsync: vsync, duration: behavior.alignDuration);
_animation!.addListener(() {
final newVector = end - start;
final newPixels = start +
(newVector * behavior.alignCurve.transform(_animation!.value));
setPixels(newPixels);
});
_animation!.forward();
}