Flutter 如何使用PageView显示多个页面?
我有一个使用PageView的应用程序,我想让它具有响应性——比如在平板电脑上,它显示3个页面,而在智能手机上,它只显示一个页面:Flutter 如何使用PageView显示多个页面?,flutter,flutter-layout,Flutter,Flutter Layout,我有一个使用PageView的应用程序,我想让它具有响应性——比如在平板电脑上,它显示3个页面,而在智能手机上,它只显示一个页面: 如何更改页面视图中显示的页面数?您可以通过页面控制器控制页面视图中显示的页面数 然后将其传递到您的页面视图: 必须使用LayoutBuilder检查最大宽度,然后才能设置PageController(viewportFraction:)相应地 以下是一个例子: PageController pageController; @override Widg
如何更改页面视图中显示的页面数?您可以通过页面控制器控制页面视图中显示的页面数 然后将其传递到您的页面视图:
必须使用LayoutBuilder检查最大宽度,然后才能设置
PageController(viewportFraction:)代码>相应地
以下是一个例子:
PageController pageController;
@override
Widget build(BuildContext context) {
return Scaffold(
body: LayoutBuilder(builder: (context, constrains) {
if (constrains.maxWidth < 600) {
pageController = PageController(viewportFraction: 1.0);
} else {
pageController = PageController(viewportFraction: 0.3);
}
return PageView.builder(
controller: pageController,
itemCount: places.length,
itemBuilder: (context, index) {
// return your view for pageview
},
);
}),
);
}
PageController-PageController;
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:布局生成器(生成器:(上下文,约束){
if(constraints.maxWidth<600){
pageController=pageController(viewportFraction:1.0);
}否则{
pageController=pageController(viewportFraction:0.3);
}
返回PageView.builder(
控制器:页面控制器,
itemCount:places.length,
itemBuilder:(上下文,索引){
//返回pageview的视图
},
);
}),
);
}
这似乎只适用于viewport 1/3,而不适用于viewport 1/2,因为它在中间显示一页,在左侧显示半页,在右侧显示另一半页。有没有一种方法可以将两整页显示在一起?
PageView(
controller: controller,
...
),
PageController pageController;
@override
Widget build(BuildContext context) {
return Scaffold(
body: LayoutBuilder(builder: (context, constrains) {
if (constrains.maxWidth < 600) {
pageController = PageController(viewportFraction: 1.0);
} else {
pageController = PageController(viewportFraction: 0.3);
}
return PageView.builder(
controller: pageController,
itemCount: places.length,
itemBuilder: (context, index) {
// return your view for pageview
},
);
}),
);
}