首页 > 解决方案 > 在颤动中控制 listview.builder 中文本字段的滚动

问题描述

TextFields在一个ListView.builder. 当用户提交时,该值被添加到valueList.

List valueList = [];

ListView.builder(
                itemBuilder: (context, index){
                  return Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: TextField(
                      keyboardType: TextInputType.number,
                      onSubmitted: (value) {
                        valueList.add(value);
                        print(valueList);
                      },
                    ),
                  );
                }),

我想要它做的是,当用户点击提交按钮时,我希望滚动移动到下一个TextField. 有FocusNode。但我无法找到如何在ListView.builder

标签: flutter

解决方案


只要您知道滚动多远,就可以controller在您的位置上使用 a并为某个位置设置动画...ListView.builder

final ScrollController scrollcontroller = new Scrollcontroller();
final List valueList = [];

//...

ListView.builder(
  controller: scrollcontroller,

  itemBuilder: (context, index){
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: TextField(
        keyboardType: TextInputType.number,
        onSubmitted: (value) {
          valueList.add(value);

          double height_of_textfield = 20;
          // focus on next input then
          controller.animateTo(index * height_of_textfield, duration: /* some duration */, curve: Curves.easeOutCubic);
        },
      ),
    );
  }),
//...

如果你有一致的高度,这会很好用,否则你必须想办法计算滚动高度以动画到......


推荐阅读