The desired animation times are shown in the following diagram:

To animate a value during a subsection of a larger animation,
Flutter provides the Interval class.
An Interval takes a start time percentage and an end 
time percentage. That Interval can then be used to
animate a value between those start and end times,
instead of using the entire animation’s start and 
end times. For example, given an animation that takes 1 second, 
an interval from 0.2 to 0.5 would start at 200 ms
(20%) and end at 500 ms (50%).

Declare and calculate each list item’s Interval and the 
bottom button Interval.

Animate the list items and button

The staggered animation plays as soon as the menu becomes visible.

Start the animation in initState().

Each list item slides from right to left and
fades in at the same time.