10

似乎PageView总是会根据滚动轴填充。什么是满足“偷看”的最佳方法PageView

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

请参阅下图,了解我正在尝试实现的示例。

在此处输入图像描述

4

2 回答 2

11

此功能于 2017 年 3 月 3 日添加。在@EricSeidel 的请求之后。

这可以通过PageView的控制器属性来实现。

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)
          ],
        ),
      ),
    );
  }
}

我想不出更好的方法来在页面之间添加边距以及如何避免最后一页和起始页之后的空间。

在此处输入图像描述

于 2018-05-15T09:56:28.213 回答
6

我的理解是,当前的 PageView 无法做到这一点,我已经把它变成了一个问题:https ://github.com/flutter/flutter/issues/8408

于 2017-02-24T23:55:47.020 回答