我正在尝试创建卡的可滚动列表,这些列表卡在屏幕中央。为此,我使用了一个带有小的viewportFraction
的PageView。
在加载屏幕时,第一页呈现在屏幕中央,左侧留有足够的填充,第二页的一小部分可以按预期显示。但是,当我滚动并到达最后一页时,它不会停留在原位。它会跳回到上一页。如果页面捕捉逻辑试图将页面的中心转换为屏幕的中心,但由于页面的宽度小于屏幕的宽度并且没有正确的内容而失败,我不知道。
希望这个GIF可以更好地解释我想说的话:
简而言之,我无法让它停留在最后一页。
以下是代码摘录:
class _PageViewWidgetState extends State<PageViewWidget> {
PageController controller;
@override
initState() {
super.initState();
controller = new PageController(
initialPage: 0,
keepPage: true,
viewportFraction: 0.75,
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Page View'),
),
body: _buildCards(),
);
}
_buildCards() {
return Center(
child: Container(
height: 500,
child: PageView.builder(
controller: controller,
itemCount: 3,
itemBuilder: (context, _) => Container(
margin: const EdgeInsets.all(15.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(30),
color: Colors.blue,
),
),
),
),
);
}
}
我在PageView
或PageViewController
上找不到任何属性可能对此有所帮助。删除捕捉当然可以让我停留在最后一页,但是除非没有其他方法,否则我想保留捕捉效果。