Mitgliederladen/Frontend-user/lib/expand.dart
2023-06-19 16:25:10 +02:00

60 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
//this was used in a earlier version of the app and will possibly be removed in future versions.
class Expand extends StatefulWidget {
final Widget child;
final bool expand;
const Expand({super.key, this.expand = true, required this.child});
@override
State<Expand> createState() => _ExpandState();
}
class _ExpandState extends State<Expand> with SingleTickerProviderStateMixin {
late AnimationController expandController;
late Animation<double> animation;
@override
void initState() {
super.initState();
prepareAnimations();
_runExpandCheck();
}
///Setting up the animation
void prepareAnimations() {
expandController = AnimationController(
vsync: this, duration: const Duration(milliseconds: 500));
animation = CurvedAnimation(
parent: expandController,
curve: Curves.fastOutSlowIn,
);
}
void _runExpandCheck() {
if (widget.expand) {
expandController.forward();
} else {
expandController.reverse();
}
}
@override
void didUpdateWidget(Expand oldWidget) {
super.didUpdateWidget(oldWidget);
_runExpandCheck();
}
@override
void dispose() {
expandController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return SizeTransition(
axisAlignment: 1.0, sizeFactor: animation, child: widget.child);
}
}