Как анимировать весь виджет listview вместо ширины экрана во Flutter - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь анимировать карты курса валюты по бокам, я создал список и использовал виджет 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,
                    ),
                  ],
                );
              },
            )),
      ),
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...