Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何使用PageView显示多个页面?_Flutter_Flutter Layout - Fatal编程技术网

Flutter 如何使用PageView显示多个页面?

Flutter 如何使用PageView显示多个页面?,flutter,flutter-layout,Flutter,Flutter Layout,我有一个使用PageView的应用程序,我想让它具有响应性——比如在平板电脑上,它显示3个页面,而在智能手机上,它只显示一个页面: 如何更改页面视图中显示的页面数?您可以通过页面控制器控制页面视图中显示的页面数 然后将其传递到您的页面视图: 必须使用LayoutBuilder检查最大宽度,然后才能设置PageController(viewportFraction:)相应地 以下是一个例子: PageController pageController; @override Widg

我有一个使用PageView的应用程序,我想让它具有响应性——比如在平板电脑上,它显示3个页面,而在智能手机上,它只显示一个页面:


如何更改页面视图中显示的页面数?

您可以通过页面控制器控制页面视图中显示的页面数

然后将其传递到您的页面视图:


必须使用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
          },
        );
      }),
    );
  }