如何检测 ListView 项目是否添加到屏幕外?

How can I detect if ListView item added off-screen?

如何检测是否在屏幕外添加了 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),
      ),
    );
  }
}

https://dartpad.dev/81dcfd6e4255bde548751180c54a9ade

检查这个。 你需要使用滚动控制器