• 第一百五十七回 SliverList组件


    我们在上一章回中介绍了沉浸式状态栏相关的内容,本章回中将介绍SliverList组件.闲话休提,让我们一起Talk Flutter吧。

    概念介绍

    我们在这里介绍的SliverList组件是一种列表类组件,类似我们之前介绍过的ListView组件,它们的不同之处在于SliverList可以被当作一个整体来滑动。我们将在本章回中详细介绍SliverList的使用方法。

    使用方法

    和其它组件一样,SliverList组件提供了相关的属性来控制自己,不过它的属性只有两个,一个是常用的key属性,另外一个是delegate属性。

    我们重点介绍delegate属性。该属性是SliverChildDelegate类型,不过这个类是一个抽象类,无法创建对象,它有两个实现类,详细如下:

    • SliverChildBuilderDelegatet
      该类两个常用属性builder和childCount。builder属性用来创建列表中的具体内容,它是一个方法类型,通过方法方法返回一个组件,方法的原型为
      Widget? Function(BuildContext context, int index);
      其中childCount属性用来控制列表中列表项的具体数量,这个值可空,不过一定要给它赋值,否则无法生成列表,也无法显示页面,但是不会有编译和运行错误,按照源代码中的注释来看是有内存泄漏。我觉得这个值设置为可空不合理,大家也可以发表自己的看法。
    • SliverChildListDelegate.
      该类有一个常用属性:children,它的类型为List,它和Column组件的childrnen属性完全相同,因此大家可以参考Column组件的用法来使用它。

    示例代码

    介绍完SliverList的使用方法后,我们通过具体的示例代码来演示。

    ///创建delegate对象,使用builder方法。
      SliverList(
        delegate: SliverChildBuilderDelegate((context,index){
          return Container(
            height: 60,
            alignment: Alignment.center,
            child: Text('This is ${index+1} item'),
          );
        },
          ///list中包含内容的数量
          childCount:5,
        ),
      ),
      ///与上面的SliverList类似,只是不有创建delegate对象,而是直接使用现成的list对象
      SliverList(
        delegate: SliverChildListDelegate(
          List.generate(5, (index) => const Icon(Icons.add),),
        ) ,
      ),
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    上面的示例代码中演示了两种给delegate属性赋值的方法,第一种创建的是Text组件,第二种使用了已经有List,只不过List中的内容是Icon组件。

    依据目前的知识我们还不能演示程序的运行结果,因为还需要其它组件配合才可以运行,大家不用担心,目前只需要熟练掌握如何创建SliverList组件就可以了,我们在后面章回中会使用本章回创建的组件给大家演示程序运行效果。

    看官们,与"SliverList组件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

  • 相关阅读:
    Redis布隆过滤器
    解锁区块链游戏数据解决方案
    Leetcode 【1155. 掷骰子等于目标和的方法数】
    C++之异常
    将折叠屏卖到5999元!但摩托罗拉razr 2022的看点不止性价比
    freemarker遍历list拼接成字符串(逗号分隔)
    C++千题千解 | P1348 Couple number(洛谷)
    若依系统不分离版框架Mysql更换SqlServer
    Google Earth Engine(GEE)——因阈值设定,无法加载影像放大后的影像
    java实现国密算法SM3摘要加密
  • 原文地址:https://blog.csdn.net/talk_8/article/details/133362516