Mat*_*ans 14 flutter flutter-layout
我来自 Web 开发背景,并且习惯于能够创建一个同时具有 x 和 y 溢出的元素(允许向任何方向滚动)。我正在努力使用 Flutter 实现相同的功能。
查看文档,我找到了 SingleChildScrollView,但它只允许 Axis.horizontal 或 Axis.vertical,而不是两者。
所以我尝试了以下方法:
return SingleChildScrollView( // horizontal scroll widget
scrollDirection: Axis.horizontal,
child: SingleChildScrollView( // vertical scroll widget
scrollDirection: Axis.vertical,
child: ...content of the container etc...
)
);
Run Code Online (Sandbox Code Playgroud)
这适用于 x 和 y,但它不允许对角滚动。
有没有办法实现对角滚动,或者有没有更好的材料小部件,我完全没有?
谢谢
我已经找到了一个解决方案,尽管它并不完美:
我创建了一个 StatefulWidget Offset _scrollOffset,它使用带有 Transform 类型子级的 ClipRect。变换矩阵 ( Matrix4.identity()..translate(_offset.dx, _offset.dy)) 应用于变换。
AGestureDetector分配了一个 onPanUpdate 回调来更新滚动位置。_scrollOffset += e.delta。如果滚动位置太低或太高,则可以通过设置滚动位置来将其限制在小部件的边界内。
动画和动画控制器用于设置投射速度。onPanEnd 提供最后一次平移的速度,因此只需根据该速度执行带有 fling 的 Tween。
动画在TapDown 上停止,以便用户可以停止滚动速度。
主要问题是它不能完美模仿 Android 或 iOS 滚动速度,尽管我正在努力使用 Flutter 提供的 ScrollSimulation 类让它更好地工作。
| 归档时间: |
|
| 查看次数: |
3537 次 |
| 最近记录: |