import 'package:flutter/material.dart'; class AnimatedTranslate extends ImplicitlyAnimatedWidget { final Widget? child; final Offset? offset; AnimatedTranslate({this.child, this.offset}) : super( duration: Duration(milliseconds: 300), ); @override ImplicitlyAnimatedWidgetState createState() => _AnimatedTranslateState(); } class _AnimatedTranslateState extends AnimatedWidgetBaseState { Tween? _offsetTween; @override Widget build(BuildContext context) { return Transform.translate( offset: _offsetTween!.evaluate(animation)!, child: widget.child, ); } @override void forEachTween(visitor) { _offsetTween = visitor( _offsetTween, widget.offset, (value) => Tween(begin: value), ) as Tween?; } }