我已经在import React, { useState } from "react";
import "./styles.css";
export default function App() {
const [value, setValue] = useState(0);
const continuosIncerment = () => {
console.log(`Setting ${value}`);
setValue(value + 1);
timer = setTimeout(function() {
continuosIncerment();
}, 1000);
};
function timeoutClear() {
clearTimeout(timer);
}
return (
<div className="App">
<button
onMouseLeave={timeoutClear}
onMouseUp={timeoutClear}
onMouseDown={continuosIncerment}
>
Increment
</button>
<div>Value = {value} </div>
</div>
);
}
内创建了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
答案 0 :(得分:0)
只要您知道要滚动多远,就可以在controller
上使用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);
},
),
);
}),
//...
如果您具有一致的高度,这将很好用,否则您将不得不想出一种方法来计算滚动高度以制作动画...