1分钟
03 ScrollConfiguration 和 ScrollBehavior-1
我们知道所有的滑动控件都是通过 Scrollable 对触摸进行响应从而进行滑动的。
如下代码所示,在 Scrollable 的 _updatePosition 方法内,当 widget.physics == null 时,_physics 默认是从 ScrollConfiguration.of(context) 的 getScrollPhysics(context) 方法获取 ,而 ScrollConfiguration.of(context) 返回的是一个 ScrollBehavior 对象。
// Only call this from places that will definitely trigger a rebuild.
void _updatePosition() {
_configuration = ScrollConfiguration.of(context);
_physics = _configuration.getScrollPhysics(context);
if (widget.physics != null)
_physics = widget.physics.applyTo(_physics);
final ScrollController controller = widget.controller;
final ScrollPosition oldPosition = position;
if (oldPosition != null) {
controller?.detach(oldPosition);
scheduleMicrotask(oldPosition.dispose);
}
_position = controller?.createScrollPosition(_physics, this, oldPosition)
?? ScrollPositionWithSingleContext(physics: _physics, context: this, oldPosition: oldPosition);
assert(position != null);
controller?.attach(position);
}所以默认情况下 ,ScrollPhysics 是和 ScrollConfiguration 和 ScrollBehavior 有关系。
学员评价