看来PageView将始终根据滚动轴填充。迎合PageView中的“偷看”的最佳方法是什么?

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

请参阅下面的图像,以获取我要实现的目标的示例。

flutter - 带有水平未填充子级的PageView-LMLPHP

最佳答案

此功能是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)
          ],
        ),
      ),
    );
  }
}

我想不出一种更好的方法来增加页面之间的边距,以及如何避免在上一页和下一页之后留出空间。

flutter - 带有水平未填充子级的PageView-LMLPHP

关于flutter - 带有水平未填充子级的PageView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42422621/

10-10 08:22