Я пытаюсь анимировать карты курса валюты по бокам, я создал список и использовал виджет SlideTransition для индивидуальной анимации карт по горизонтали. но, к сожалению, показывает только 3 карты, что соответствует ширине экрана. как показать все карты. Я использовал listview, потому что размер списка составляет 173 элемента.
class AnimatedCard extends StatefulWidget {
final Map cr;
AnimatedCard({Key key, this.cr}) : super(key: key);
@override
_AnimatedCardState createState() => _AnimatedCardState();
}
class _AnimatedCardState extends State<AnimatedCard>
with SingleTickerProviderStateMixin {
AnimationController _controller;
Animation<Offset> _offsetAnimation;
@override
void initState() {
super.initState();
_controller = AnimationController(
duration: const Duration(seconds: 20),
vsync: this,
)..repeat(reverse: false);
_offsetAnimation = Tween<Offset>(
begin: Offset(1.0, 0.0),
end: const Offset(-1.0, 0.0),
).animate(CurvedAnimation(
parent: _controller,
curve: Curves.linear,
));
}
@override
void dispose() {
super.dispose();
_controller.dispose();
}
ScrollController _scrollController = new ScrollController();
@override
Widget build(
BuildContext context,
) {
return Expanded(
child: SlideTransition(
position: _offsetAnimation,
child: SizedBox(
child: new ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: widget.cr.length,
itemBuilder: (BuildContext context, int index) {
String key = widget.cr.keys.elementAt(index);
return new Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Card(
child: Center(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: new Text(
"$key : ${widget.cr[key].toStringAsFixed(4)}",
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
)),
elevation: 5,
color: Colors.blue,
),
],
);
},
)),
),
);
}
}