mirror of
https://github.com/immich-app/immich.git
synced 2026-02-28 17:49:05 +03:00
* wip * Functional implementation, still need to bug test. * Fixed flickering bugs * Fixed bug with drag actions interfering with zoom panning. Fixed video being zoomable when bottom sheet is shown. Code cleanup. * Add comments and simplify video controls * Clearer variable name * Fix bug where the redundant onTapDown would interfere with zooming gestures * Fix zoom not working the second time when viewing a video. * fix video of live photo retaining pan from photo portion * code cleanup and simplified widget stack --------- Co-authored-by: Alex <alex.tran1502@gmail.com>
45 lines
1.2 KiB
Dart
45 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:immich_mobile/widgets/asset_viewer/animated_play_pause.dart';
|
|
|
|
class CenterPlayButton extends StatelessWidget {
|
|
const CenterPlayButton({
|
|
super.key,
|
|
required this.backgroundColor,
|
|
this.iconColor,
|
|
required this.show,
|
|
required this.isPlaying,
|
|
required this.isFinished,
|
|
this.onPressed,
|
|
});
|
|
|
|
final Color backgroundColor;
|
|
final Color? iconColor;
|
|
final bool show;
|
|
final bool isPlaying;
|
|
final bool isFinished;
|
|
final VoidCallback? onPressed;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Center(
|
|
child: UnconstrainedBox(
|
|
child: AnimatedOpacity(
|
|
opacity: show ? 1.0 : 0.0,
|
|
duration: const Duration(milliseconds: 100),
|
|
child: DecoratedBox(
|
|
decoration: BoxDecoration(color: backgroundColor, shape: BoxShape.circle),
|
|
child: IconButton(
|
|
iconSize: 32,
|
|
padding: const EdgeInsets.all(12.0),
|
|
icon: isFinished
|
|
? Icon(Icons.replay, color: iconColor)
|
|
: AnimatedPlayPause(color: iconColor, playing: isPlaying),
|
|
onPressed: onPressed,
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|