Files
umbrix/lib/core/widget/animated_visibility.dart
2024-02-09 12:04:45 +03:30

39 lines
1006 B
Dart

import 'package:flutter/widgets.dart';
class AnimatedVisibility extends StatelessWidget {
const AnimatedVisibility({
super.key,
required this.visible,
this.axis = Axis.horizontal,
this.padding = EdgeInsets.zero,
required this.child,
});
final bool visible;
final Axis axis;
final EdgeInsets padding;
final Widget child;
@override
Widget build(BuildContext context) {
final replacement = axis == Axis.vertical
? const SizedBox(width: double.infinity)
: const SizedBox.shrink();
return AnimatedSwitcher(
duration: const Duration(milliseconds: 200),
transitionBuilder: (child, animation) => SizeTransition(
sizeFactor: animation,
child: FadeTransition(opacity: animation, child: child),
),
child: visible
? AnimatedPadding(
padding: padding,
duration: const Duration(milliseconds: 200),
child: child,
)
: replacement,
);
}
}