Flutter Retrigger ListView 上的交错动画

标签 flutter dart flutter-layout flutter-animation flutter-animatedlist

我正在使用flutter_staggered_animations在我的 listView 应用程序中。启动应用程序时它运行得很好。

问题:

如果我更改 listViewchild-widget 甚至只是 itemCount,我希望触发动画。所以我需要的是 staggeredListrebuild

但是我该怎么做呢?我尝试简单地使用 setState 更改 childitemCount 。但这正在触发动画......

找不到任何相关内容。如果您需要更多信息,请告诉我!

我使用的代码几乎与示例中完全相同:

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: AnimationLimiter(
      child: ListView.builder(
        itemCount: 100,
        itemBuilder: (BuildContext context, int index) {
          return AnimationConfiguration.staggeredList(
            position: index,
            duration: const Duration(milliseconds: 375),
            child: SlideAnimation(
              verticalOffset: 50.0,
              child: FadeInAnimation(
                child: YourListChild(),
              ),
            ),
          );
        },
      ),
    ),
  );
}

最佳答案

您可以在AnimationLimiter上提供一个新键,它将重新创建AnimationLimiter,

AnimationLimiter(
  key: ValueKey("$itemCount"),
  child: ListView.builder(
class STA extends StatefulWidget {
  const STA({super.key});

  @override
  State<STA> createState() => _STAState();
}

class _STAState extends State<STA> {
  int itemCount = 5;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          itemCount++;
          setState(() {});
        },
      ),
      body: AnimationLimiter(
        key: ValueKey("$itemCount"),
        child: ListView.builder(
          itemCount: itemCount,
          itemBuilder: (BuildContext context, int index) {
            return AnimationConfiguration.staggeredList(
              position: index,
              duration: const Duration(milliseconds: 375),
              child: SlideAnimation(
                verticalOffset: 50.0,
                child: FadeInAnimation(
                  child: Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Container(
                      height: 50,
                      color: index.isEven ? Colors.amber : Colors.purple,
                    ),
                  ),
                ),
              ),
            );
          },
        ),
      ),
    );
  }
}

关于Flutter Retrigger ListView 上的交错动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74040075/

相关文章:

flutter - 为什么在构建 flutter web 时出现白屏

flutter - 小部件的 "const"是否只需要在有状态小部件中使用?

dart - Dart polymer 变压器到JS问题

flutter - 消除小部件之间的间隙

Flutter:左对齐展开的小部件

flutter - flutter 中具有相同像元高度的动态交错网格

flutter - Dart:在Flutter应用中最小化对Firebase的访问

android-studio - 已安装 flutter !但仍然显示 “Flutter plugin not installed; this adds Flutter specific functionality”

android - 如何在不使用 Listview 的情况下在 flutter 中循环按钮小部件

flutter - 如何在 Flutter 中将 Container 作为 IconButton 子级显示涟漪效应?