如何检测是否在屏幕外添加了 ListView 项?如果它是在屏幕外添加的,我想滚动到新添加的项目。
下面是一个最小的例子。如果您一直按 + 按钮,最终会在屏幕外添加一个项目。我想检测这种情况,然后滚动到新添加的项目。
class _MyHomePageState extends State<MyHomePage> {
List<String> _items = [];
void _addItem() {
final count = _items.length + 1;
setState(() {
_items.add('Item $count');
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: ListView.builder(
itemCount: _items.length,
itemBuilder: (_, index) {
return Container(
height: 50,
child: Card(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Text(_items[index]),
],
),
),
);
}),
floatingActionButton: FloatingActionButton(
onPressed: _addItem,
tooltip: 'Add Item',
child: Icon(Icons.add),
),
);
}
}