具有水平,非填充子项的PageView

时间:2017-02-23 17:37:19

标签: flutter

似乎PageView将始终根据滚动轴填充。什么是迎合PageView中“窥视”的最佳方法?

我尝试使用标准PageView.custom实现SliverChildListDelegate,但我猜这不允许任意/自定义大小调整。我打算开始做一些自定义的事情但是决定在这里问一个好的开始。

请参阅下图,了解我正在努力实现的目标。

enter image description here

2 个答案:

答案 0 :(得分:3)

我的理解是,使用当前的PageView无法做到这一点,我将此转变为一个问题:https://github.com/flutter/flutter/issues/8408

答案 1 :(得分:2)

此功能为added in 3 Mar 2017。在@EricSeidel's request之后。

这可以通过controllerPageView属性实现。

controller: PageController(
  initialPage: 1,
  viewportFraction: 0.8,
),

PageController.viewportFraction要查看上一个和下一个。 启动应用时,PageController.initialPage显示中间页。

import 'package:flutter/material.dart';

void main() => runApp(LimeApp());

class LimeApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Lime',
      home: MainPage(),
    );
  }
}

class MainPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        margin: EdgeInsets.symmetric(
          vertical: 50.0,
        ),
        child: PageView(
          controller: PageController(
            initialPage: 1,
            viewportFraction: 0.8,
          ),
          children: [
            Container(margin: EdgeInsets.symmetric(horizontal: 10.0,), color: Colors.redAccent),
            Container(margin: EdgeInsets.symmetric(horizontal: 10.0,), color: Colors.purpleAccent),
            Container(margin: EdgeInsets.symmetric(horizontal: 10.0,), color: Colors.greenAccent)
          ],
        ),
      ),
    );
  }
}

我无法找到一种更好的方法来在页面之间添加页边距以及如何在最后一页和起始页之后避免空格。

enter image description here