Flutter开发之——可滑动组件—ListView

一 概述

ListView跟GridView的功能类似,都是常用的滚动展示数据的列表组件

  • 通过构造创建方式
  • 通过:build,separated,custom快速创建

二 ListView

2.1 构造函数

ListView({
    Key? key,
    Axis scrollDirection = Axis.vertical,
    bool reverse = false,
    ScrollController? controller,
    bool? primary,
    ScrollPhysics? physics,
    bool shrinkWrap = false,
    EdgeInsetsGeometry? padding,
    this.itemExtent,
    bool addAutomaticKeepAlives = true,
    bool addRepaintBoundaries = true,
    bool addSemanticIndexes = true,
    double? cacheExtent,
    List<Widget> children = const <Widget>[],
    int? semanticChildCount,
    DragStartBehavior dragStartBehavior = DragStartBehavior.start,
    ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
    String? restorationId,
    Clip clipBehavior = Clip.hardEdge,
  })

2.2 常见属性说明

属性说明取值
reverse是否反转滚动方向bool
controller滚动控制器ScrollController
scrollDirection①滚动方向Axis枚举
physics②滚动物理特性ScrollPhysics
scrollDirection①
属性说明
horizontal水平方向滚动
vertical垂直方向滚动
physics②
属性说明
AlwaysScrollableScrollPhysics总是可以滑动
NeverScrollableScrollPhysics禁止滚动
BouncingScrollPhysics内容超过一屏 上拉有回弹效果
ClampingScrollPhysics包裹内容 不会有回弹

三 构建方式创建ListView

3.1 代码

ListView(
          children: List.generate(10, (position) {
            return Container(
              alignment: Alignment.center,
              height: 80,
              color: Colors.primaries[position % Colors.primaries.length],
              child: Text("$position"),
            );}),
        )

3.2 效果图

四 快速创建方式 build,separated,custom

4.1 ListView.build

构建属性
  • itemBuilder是构建子控件
  • itemCount指定数据个数
构建代码
ListView.builder(
          itemCount: 10,
          itemBuilder: (context, index) {
            return Container(
              alignment: Alignment.center,
              height: 80,
              color: Colors.primaries[index % Colors.primaries.length],
              child: Text("$index"),
            );
          },
        )

4.2 ListView.separated

使用说明
  • 当每一项有分割线要求时,使用这个构建方式创建
构建属性
  • itemCount:数据个数
  • separatorBuilder:分隔项构建控件
  • itemBuilder:子控件构建
构建代码
ListView.separated(
          itemCount: 10,
          separatorBuilder: (context,index){return Divider(height: 10,);} ,
          itemBuilder: (context, index) {
            return Container(
              alignment: Alignment.center,
              height: 80,
              color: Colors.primaries[index % Colors.primaries.length],
              child: Text("$index"),
            );
          },
        )

4.3 ListView.custom

构建说明

childrenDelegate:提供子组件构建的代理,有SliverChildBuilderDelegateSliverChildListDelegate可用于快速构建

构建代码

SliverChildBuilderDelegate构建方式

ListView.custom(
          childrenDelegate:  SliverChildBuilderDelegate((context, index) {
            return Container(
              alignment: Alignment.center,
              height: 80,
              color: Colors.primaries[index % Colors.primaries.length],
              child: Text("$index"),
            );
          },childCount: 10))

SliverChildListDelegate构建方式

ListView.custom(
          childrenDelegate: SliverChildListDelegate(List.generate(10, (position) {
            return Container(
              alignment: Alignment.center,
              height: 80,
              color: Colors.primaries[position % Colors.primaries.length],
              child: Text("$position"),
            );
          })),
        )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值