import 'package:flutter/material.dart'; class AppBarWidget extends StatelessWidget implements PreferredSizeWidget { const AppBarWidget({ required this.child, required this.controller, required this.visible, Key? key, }) : super(key: key); final PreferredSizeWidget child; final AnimationController controller; final bool visible; @override Size get preferredSize => child.preferredSize; @override Widget build(BuildContext context) { visible ? controller.reverse() : controller.forward(); return SlideTransition( position: Tween( begin: Offset.zero, end: const Offset(0, -1), ).animate(CurvedAnimation( parent: controller, curve: Curves.easeInOutBack, )), child: child, ); } }