📜  ScrollPhysics (1)

📅  最后修改于: 2023-12-03 15:34:52.737000             🧑  作者: Mango

ScrollPhysics

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 组件在滑动过程中的物理效果的抽象类,我们可以根据实际需求选择不同的实现类以达到不同效果。