flutter 滚动到指定widget

125 阅读1分钟

背景:有个表单提交页面,需要在校验错误项的时候自动滚动到第一个错误项

方案:使用 SingleChildScrollView 锚点的实现流程

1. 将需要锚点的所有代码使用 SingleChildScrollView 包裹,为每一个锚点创建对应的 GlobalKey, 

GlobalKey key = GlobalKey();

2.使用 Scrollable 的 ensureVisible 方法跳转至每个 key.

Scrollable.ensureVisible(key.currentContext)

为啥选择SingleChildScrollView?

SingleChildScrollView 类似于 Android 中的 ScrollView,它只能接收一个子组件,由于默认没有延迟加载的特性,所以我们可以刚开始就获取里面所有速度的位置,这样就可以很好的实 现锚点效果。