Flutter中替代RecyclerView的是什么?

27

在Flutter中,RecyclerView的替代方案是什么?我已经尝试使用了这段代码:

ListView.builder(
  itemBuilder: (context, index) {
    return ListTile(
      title: Text('Item $index'),
    );
  },
  itemCount: 10,
)

但如何在Flutter中使用ListView小部件进行动画效果呢?

这段代码有效吗?

 ListView(
 children: <Widget>[
ListTile(
  leading: Icon(Icons.map),
  title: Text('Map'),
),
ListTile(
  leading: Icon(Icons.photo_album),
  title: Text('Album'),
),
ListTile(
  leading: Icon(Icons.phone),
  title: Text('Phone'),
  ),
 ],
);

3
RecyclerView 本质上是 ListView 的加强版。我认为 Flutter 中的 ListView 不同于 RecyclerView,而更像是普通的 ListView。 - Zoe stands with Ukraine
3个回答

25

ListView:

通常情况下,这应该与少量子项一起使用,因为列表也会构建列表中的不可见元素,大量元素可能会使其效率低下。

ListView.builder():

列表项是惰性构建的,意味着只有特定数量的列表项被构建,当用户向前滚动时,早期的列表项将被销毁。

更多信息请参考这里


10

Flutter for Android开发者中,推荐使用ListView.Builder构建列表,这是一种高效且有效的方法。当您需要构建动态列表或包含大量数据的列表时,此方法非常适用。这相当于Android上的RecyclerView,可以自动回收列表元素:

@override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Sample App"),
        ),
        body: ListView.builder(
            itemCount: widgets.length,
            itemBuilder: (BuildContext context, int position) {
              return getRow(position);
            }));
  }

  Widget getRow(int i) {
    return GestureDetector(
      child: Padding(
          padding: EdgeInsets.all(10.0),
          child: Text("Row $i")),
      onTap: () {
        setState(() {
          widgets.add(getRow(widgets.length + 1));
          print('row $i');
        });
      },
    );
  }

6
您也可以使用animatedlist小部件进行动画。 以下链接中提供了代码示例。

AnimatedList


2
那个链接已经过时了。新的链接是https://docs.flutter.io/flutter/widgets/AnimatedList-class.html。明年这可能会被弃用!哈哈 - ezaspi
你说得对,你的链接已经失效了。^^ - Mackovich
值得注意的是,仅链接被弃用,而不是视图。我曾经有点困惑。 - rekire
有趣的是,原始链接现在可以使用了,而修改后的链接已经失效。 - Joe Pleavin
有趣的是,原始链接现在可用,而修订后的链接已经失效。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接