Merge pull request #38 from pedromassango/patch-1

Remove unnecessary Stack widget from photo_gallery.dart
This commit is contained in:
Shawn 2022-10-10 17:13:24 -06:00 committed by GitHub
commit 12b9a1bb49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -146,46 +146,41 @@ class _PhotoGalleryState extends State<PhotoGallery> {
gridOffset += Offset(0, -context.mq.padding.top / 2); gridOffset += Offset(0, -context.mq.padding.top / 2);
final offsetTweenDuration = _skipNextOffsetTween ? Duration.zero : swipeDuration; final offsetTweenDuration = _skipNextOffsetTween ? Duration.zero : swipeDuration;
final cutoutTweenDuration = _skipNextOffsetTween ? Duration.zero : swipeDuration * .5; final cutoutTweenDuration = _skipNextOffsetTween ? Duration.zero : swipeDuration * .5;
return Stack( return _AnimatedCutoutOverlay(
children: [ animationKey: ValueKey(_index),
// A overlay with a transparent middle sits on top of everything, animating itself each time index changes cutoutSize: imgSize,
_AnimatedCutoutOverlay( swipeDir: _lastSwipeDir,
animationKey: ValueKey(_index), duration: cutoutTweenDuration,
cutoutSize: imgSize, opacity: _scale == 1 ? .7 : .5,
swipeDir: _lastSwipeDir, child: SafeArea(
duration: cutoutTweenDuration, bottom: false,
opacity: _scale == 1 ? .7 : .5, // Place content in overflow box, to allow it to flow outside the parent
child: SafeArea( child: OverflowBox(
bottom: false, maxWidth: _gridSize * imgSize.width + padding * (_gridSize - 1),
// Place content in overflow box, to allow it to flow outside the parent maxHeight: _gridSize * imgSize.height + padding * (_gridSize - 1),
child: OverflowBox( alignment: Alignment.center,
maxWidth: _gridSize * imgSize.width + padding * (_gridSize - 1), // Detect swipes in order to change index
maxHeight: _gridSize * imgSize.height + padding * (_gridSize - 1), child: EightWaySwipeDetector(
alignment: Alignment.center, onSwipe: _handleSwipe,
// Detect swipes in order to change index threshold: 30,
child: EightWaySwipeDetector( // A tween animation builder moves from image to image based on current offset
onSwipe: _handleSwipe, child: TweenAnimationBuilder<Offset>(
threshold: 30, tween: Tween(begin: gridOffset, end: gridOffset),
// A tween animation builder moves from image to image based on current offset duration: offsetTweenDuration,
child: TweenAnimationBuilder<Offset>( curve: Curves.easeOut,
tween: Tween(begin: gridOffset, end: gridOffset), builder: (_, value, child) => Transform.translate(offset: value, child: child),
duration: offsetTweenDuration, child: GridView.count(
curve: Curves.easeOut, physics: NeverScrollableScrollPhysics(),
builder: (_, value, child) => Transform.translate(offset: value, child: child), crossAxisCount: _gridSize,
child: GridView.count( childAspectRatio: imgSize.aspectRatio,
physics: NeverScrollableScrollPhysics(), mainAxisSpacing: padding,
crossAxisCount: _gridSize, crossAxisSpacing: padding,
childAspectRatio: imgSize.aspectRatio, children: List.generate(_imgCount, (i) => _buildImage(i, swipeDuration, imgSize)),
mainAxisSpacing: padding,
crossAxisSpacing: padding,
children: List.generate(_imgCount, (i) => _buildImage(i, swipeDuration, imgSize)),
),
),
), ),
), ),
), ),
), ),
], ),
); );
}); });
} }