From the ListView
documentation:
By default, ListView will automatically pad the list’s scrollable
extremities to avoid partial obstructions indicated by MediaQuery’s
padding. To avoid this behavior, override with a zero padding
property.
So the fix is:
ListView(
padding: EdgeInsets.zero,
...
);