Flutter 如何在通过生成器添加后上下移动ListView

Flutter 如何在通过生成器添加后上下移动ListView,flutter,Flutter,添加带有生成器和“itemBuilder:…”的项目时,如何自动滚动到顶部或按钮(取决于“反转”) 以下给出了一个没有说明的错误: return ListView.builder( reverse: true, controller: _scrollController, shrinkWrap: true, itemCount: list.length,

添加带有生成器和“itemBuilder:…”的项目时,如何自动滚动到顶部或按钮(取决于“反转”)

以下给出了一个没有说明的错误:

return ListView.builder(
                  reverse: true,
                  controller: _scrollController,
                  shrinkWrap: true,
                  itemCount: list.length,
                  itemBuilder: (context, index) {
                    return ListTile(
                      title: Text(list[index]),
                    );
                  },
                ).controller.animateTo(0.5, duration: const Duration(milliseconds: 100), curve: null);

由于您在最后调用
animateTo
方法,因此此返回语句不会返回小部件。我假设您将此代码段指定为小部件或子部件,它将给您一个错误

为了解决这个问题,我可以提出这样的建议

           // Assign your ListView to a variable and return that variable.
           ListView list = ListView.builder(
              reverse: true,
              controller: _scrollController,
              shrinkWrap: true,
              itemCount: list.length,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text(list[index]),
                );
              },
            );

            //Animate it afterward. Preferably inside a button or listener.
            list.controller.animateTo(0.5, duration: const Duration(milliseconds: 100), curve: null);

由于您在最后调用
animateTo
方法,因此此返回语句不会返回小部件。我假设您将此代码段指定为小部件或子部件,它将给您一个错误

为了解决这个问题,我可以提出这样的建议

           // Assign your ListView to a variable and return that variable.
           ListView list = ListView.builder(
              reverse: true,
              controller: _scrollController,
              shrinkWrap: true,
              itemCount: list.length,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text(list[index]),
                );
              },
            );

            //Animate it afterward. Preferably inside a button or listener.
            list.controller.animateTo(0.5, duration: const Duration(milliseconds: 100), curve: null);