Вам просто нужно установить расстояние, не равное нулю, со стороны справа и слева , чтобы контейнер не Прыжок , I немного изменил код (попробуйте):
Column(
children: <Widget>[
Container(
height: 50,
width: 400,
color: Colors.green,
child: Padding(
padding: const EdgeInsets.only(left: 20.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
width: 300,
height: 40,
decoration: BoxDecoration(
color: Colors.grey,
borderRadius:
BorderRadius.all(Radius.circular(20))),
child: Stack(
children: <Widget>[
AnimatedPositioned(
right: check ? 0 : 200,
left: check ? 200 : 0,
onEnd: () {
print('done');
},
child: InkWell(
onTap: () {
setState(() => check = !check);
},
child: Container(
width: 50,
height: 40,
decoration: BoxDecoration(
color: Colors.black54,
borderRadius: BorderRadius.all(
Radius.circular(20))),
),
),
duration: const Duration(milliseconds: 5000),
curve: Curves.bounceOut,
)
],
),
),
],
),
)),
],
),