AnimatedList自动滚动到最后一项并返回

发布于 2025-01-23 03:36:53 字数 741 浏览 0 评论 0原文

我已经实现了一个动画列表,其中具有这样的slidransition

@override
Widget build(BuildContext context) {
  return Expanded(
    child: Container(
      child: ListView(
        children: [
          // Other widgets
          animatedList(),
        ],
      ),
    ),
  );
}

Widget animatedList() {
  return AnimatedList(
    shrinkWrap: true,
    key: _myKeyList,
    initialItemCount: _myItemsList.length,
    itemBuilder: (context, index, animation) {
      return SlideTransition(
        position: animation.drive(_offset),
        child: _buildMyItemTile[index],
      );
    },
  );
}

,其中_offset变量是一个补间动画。列表的每个项目均以500毫秒的延迟插入和动画。

现在,当将所有项目添加到AnimatedList中时,我希望该AnimatedList内容从第一个项目自动到最后一项(又一次),以显示其所有内容。 我该怎么办?

I've implemented an Animated list with SlideTransition like this

@override
Widget build(BuildContext context) {
  return Expanded(
    child: Container(
      child: ListView(
        children: [
          // Other widgets
          animatedList(),
        ],
      ),
    ),
  );
}

Widget animatedList() {
  return AnimatedList(
    shrinkWrap: true,
    key: _myKeyList,
    initialItemCount: _myItemsList.length,
    itemBuilder: (context, index, animation) {
      return SlideTransition(
        position: animation.drive(_offset),
        child: _buildMyItemTile[index],
      );
    },
  );
}

where _offset variable is a Tween animation. Each item of list is inserted and animated with a delay of 500 milliseconds.

Now, when all items are added to AnimatedList, i would like that AnimatedList content scroll automatically from first item to last (and back) continuously for show all its content.
How can i do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九公里浅绿 2025-01-30 03:36:53

去做就对了
添加一个控制器

final controll = ScrollController();

,然后在AnimatedList中添加此控制器,

AnimatedList(
   controller: controll,
    ...
    )

使函数呼叫最后一个位置或第一个位置
0对于第一个位置,最后一个位置或真实的错误,我不知道,请使用您的想象力,

void getLastItem(int 0){
 var position = int == 0
 ? controll.position.minScrollExtent
 : controll.position.maxScrollExtent;
 controll.animateTo(
      position,
      duration: const Duration(milliseconds: 300),
      curve: Curves.easeInCubic,
    )
}

希望我能帮助您。

Just do it
add a controller

final controll = ScrollController();

then add this controller in the AnimatedList

AnimatedList(
   controller: controll,
    ...
    )

Make a function to call the last position or the first
0 for first position and 1 for last position or true false, I don't know, use your imagination

void getLastItem(int 0){
 var position = int == 0
 ? controll.position.minScrollExtent
 : controll.position.maxScrollExtent;
 controll.animateTo(
      position,
      duration: const Duration(milliseconds: 300),
      curve: Curves.easeInCubic,
    )
}

I hope I helped you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文