📅  最后修改于: 2023-12-03 15:34:52.737000             🧑  作者: Mango
ScrollPhysics
是Flutter中一个抽象类,用于控制Scrollable
组件在滑动过程中的物理效果,包括滚动摩擦、边缘效果等。
abstract class ScrollPhysics extends Diagnosticable {}
ScrollPhysics
是一个抽象类,继承自 Diagnosticable
。
applyBoundaryConditions
用于检查滚动边缘和滑动的像素速率,返回对应的新速率。
ScrollMetrics applyBoundaryConditions(ScrollMetrics position, double value);
applyPhysicsToUserOffset
将用户传递到Scrollable
的偏移量应用于此物理补间器中的物理扭曲。
double applyPhysicsToUserOffset(ScrollMetrics position, double offset);
getMetrics
获取给定 ScrollPosition
的测量对象。
ScrollMetrics getMetrics(ScrollPosition position);
getVelocity
计算滚动端点的速度。返回值单位:像素/秒。
double getVelocity(ScrollMetrics position);
toString
对象的字符串描述。
String toString({DiagnosticLevel minLevel});
Flutter提供了一些 ScrollPhysics
的实现类,根据不同的需求选择不同的实现类即可。
BouncingScrollPhysics
当滚动到边缘时,回弹回来的效果。
import 'package:flutter/material.dart';
ListView(
physics: BouncingScrollPhysics(),
children: [
// 列表数据
],
);
ClampingScrollPhysics
当滚动到边缘时,不再滚动,没有回弹效果。
import 'package:flutter/material.dart';
ListView(
physics: ClampingScrollPhysics(),
children: [
// 列表数据
],
);
FixedExtentScrollPhysics
用于固定项的滚动区域(例如,使用FixedExtentListView
),其项目在主轴上具有固定的像素大小,而且它们紧密排列在一起。
import 'package:flutter/material.dart';
FixedExtentListView(
physics: FixedExtentScrollPhysics(),
itemExtent: 50.0,
children: [
// 列表数据
],
);
NeverScrollableScrollPhysics
完全禁用滚动,初始位置默认为顶部。
import 'package:flutter/material.dart';
ListView(
physics: NeverScrollableScrollPhysics(),
children: [
// 列表数据
],
);
ScrollPhysics
是Flutter 中用于控制 Scrollable
组件在滑动过程中的物理效果的抽象类,我们可以根据实际需求选择不同的实现类以达到不同效果。