static final sinePeriod = 2 * pi; double _endValue = 0; if (episode.percentDownloaded == 1 && !episode.hasNotified){ _endValue = sinePeriod; episode.downloadNotified(); } TweenAnimationBuilder( tween: Tween(begin:0, end:_endValue), duration: Duration(milliseconds: 200), child: child, builder: (_, double value, Widget child){ double offset = sin(value); return Transform.translate( offset: Offset(0, offset * 2), child: child, ); } )