18.ListView.build

2020-06-10  本文已影响0人  凯司机

通过构造函数中的children传入所有的子Widget有一个问题:默认会创建出所有的子Widget。

但是对于用户来说,一次性构建出所有的Widget并不会有什么差异,但是对于我们的程序来说会产生性能问题,而且会增加首屏的渲染时间。

我们可以ListView.build来构建子Widget,提供性能。


2.2.1. ListView.build基本使用

ListView.build适用于子Widget比较多的场景,该构造函数将创建子Widget交给了一个抽象的方法,交给ListView进行管理,ListView会在真正需要的时候去创建子Widget,而不是一开始就全部初始化好。

该方法有两个重要参数:

itemBuilder:列表项创建的方法。当列表滚动到对应位置的时候,ListView会自动调用该方法来创建对应的子Widget。类型是IndexedWidgetBuilder,是一个函数类型。

itemCount:表示列表项的数量,如果为空,则表示ListView为无限列表。

我们还是通过一个简单的案例来认识它:

classMyHomeBodyextendsStatelessWidget{

  @override

  Widget build(BuildContext context) {

    return ListView.builder(

      itemCount: 100,

      itemExtent: 80,

      itemBuilder: (BuildContext context, int index) {

        return ListTile(title: Text("标题$index"), subtitle: Text("详情内容$index"));

      }

    );

  }

}

上一篇下一篇

猜你喜欢

热点阅读