Flutter中如何实现_backgroundWidget区域的滚动?
解决方案
问题出在你用了Column而非可滚动组件,且Positioned已经帮你限定了该区域的上下边界,直接替换成ListView即可,无需手动设置高度——Positioned的top和bottom属性已经让子组件拥有确定的可用空间,ListView会自动适配这个范围。
修改后的_backgroundWidget代码如下:
Widget _backgroundWidget() => Positioned( top: 320, bottom: 0, left: 0, right: 0, // 替换Column为ListView,保留原有子组件结构 child: ListView( // 若要保留原Column的crossAxisAlignment: CrossAxisAlignment.center效果 // 可给每个Card套Center,或给ListView添加水平padding调整布局 padding: const EdgeInsets.symmetric(horizontal: 16), // 可选,调整左右边距 children: [ Card(...), Card(...) // 继续添加更多Card ] ) );
如果需要让每个Card保持居中对齐(对应原Column的crossAxisAlignment: CrossAxisAlignment.center),可以给每个Card外层套Center组件;或者确保Card本身有固定宽度,利用ListView占满屏幕宽度的特性实现居中。
另外,你之前给ListView设置固定高度的操作反而会破坏Positioned带来的自适应空间,导致滚动区域异常,所以去掉手动设置的高度即可正常滚动。
内容的提问来源于stack exchange,提问作者Laura Barbato
相关产品推荐
相关产品推荐

