Flutter 组件之 CustomScrollView

CustomScrollView是Flutter中用于创建自定义滚动体验的组件,它可以结合多个Sliver组件如SliverList和SliverGrid来构建。关键属性包括scrollDirection、physics(如BouncingScrollPhysics和NeverScrollableScrollPhysics)、以及slivers列表。使用CustomScrollView时,需注意内容要足够填充以实现滚动效果。

Flutter 组件之 CustomScrollView

1.简介

创建自定义滚动效果的组件,它可以组装很多Sliver组件

2.属性

  • scrollDirection:Axis.vertical滚动方向
  • reverse:是否倒序
  • controller:ScrollController滑动控制器
  • primary:当内容不足以滚动时,是否支持滚动 但是这里是不起作用的,因为CustomScrollView需要内容满了才能触发折叠效果,true 的话 controller 一定要为null
  • physics:ScrollPhysics 控制用户滚动视图的交互
    BouncingScrollPhysics:允许滚动超出边界,但之后内容会反弹回来。
    ClampingScrollPhysics: 防止滚动超出边界,夹住 。
    AlwaysScrollableScrollPhysics:始终响应用户的滚动。
    NeverScrollableScrollPhysics:不响应用户的滚动。
  • shrinkWrap:滑动方向上是否允许最大允许高度
  • anchor:零滚动偏移位置,会在滚动方向上进行整体位置偏移 0~1
  • slivers:Sliver组件
  • cacheExtent: 0.0 预加载的缓存区域
  • semanticChildCount:语义item数量,
  • scrollBehavior
  • center
  • dragStartBehavior
  • keyboardDismissBehavior
  • restorationId
  • clipBehavior

3.使用

需要配合其他Sliver组件使用

Flutter 中的 CustomScrollView 是一个用于将多个组件进行组合从而实现统一滑动效果的控件,使用时要求其中的组件必须是 Sliver 家族中的成员 [^1]。 ### 使用 CustomScrollView 主要通过其 `slivers` 参数接受一个 Sliver 数组,以此来组合多个组件实现统一滑动效果。例如,若要将多个 Sliver 组件组合在一起,可将这些 Sliver 组件添加到 `slivers` 数组中,从而实现统一的滑动效果 [^1][^2]。 ### 原理 Flutter 提供 CustomScrollView 组件是为了帮助开发者创建一个公共的 Scrollable 和 Viewport。若让开发者自己创建共用的 Scrollable 和 Viewport 对象,再将多个 ListView 对应的 Sliver 添加到共用的 Viewport 对象中,操作会比较麻烦。而使用 CustomScrollView 可以方便地实现期望的功能 [^2]。 ### 示例 以下是一个简单的 CustomScrollView 示例代码: ```dart import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('CustomScrollView Example'), ), body: CustomScrollView( slivers: <Widget>[ SliverAppBar( expandedHeight: 200.0, flexibleSpace: FlexibleSpaceBar( title: Text('Sliver App Bar'), ), ), SliverList( delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { return ListTile( title: Text('Item $index'), ); }, childCount: 20, ), ), ], ), ), ); } } ``` 在这个示例中,`CustomScrollView` 包含了一个 `SliverAppBar` 和一个 `SliverList`,`SliverAppBar` 可以实现展开和收缩的效果,`SliverList` 则展示了一个列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值