可扩展PageView

又一个PageView小部件,其视口可以沿着滚动方向扩展。Exprollable 是一个结合了 expandable(可扩展)和 scrollable(可滚动)的自创词。本项目旨在模仿 iOS 上 Apple Books 应用中使用的模态表单 UI。

您可以使用此小部件执行以下操作

试一试

运行示例应用程序,探索此软件包的所有功能。

git clone [email protected]:fujidaiti/exprollable_page_view.git
cd example
flutter pub get
flutter run

安装

使用 pub 命令将此软件包添加到您的项目中。

flutter pub add exprollable_page_view

用法

您可以像内置 PageView 一样使用 ExprollablePageViewExprollablePageView 可与任何接受 ScrollController 的可滚动小部件配合使用。但请注意,除非使用从 PageContentScrollController.of 获取的 ScrollController,否则它将无法按预期工作

import 'package:exprollable_page_view/exprollable_page_view.dart';

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: ExprollablePageView(
      itemCount: 5,
      itemBuilder: (context, page) {
        return ListView.builder(
          controller: PageContentScrollController.of(context),
          itemBuilder: (context, index) {
            return ListTile(title: Text('Item#$index'));
          },
        );
      },
    ),
  );
}

使用 ExprollablePageController 控制视口在滚动过程中如何变化。以下是一个用于吸附到三种状态的控制器示例

  1. 视口完全展开(viewportFraction == 1.0
  2. 视口比屏幕略小(viewportFraction == 0.9
  3. viewportFraction == 0.9 并且 PageView 仅覆盖屏幕的一半,类似于 BottomSheet。

const peekOffset = ViewportOffset.fractional(0.5);
controller = ExprollablePageController(
  minViewportFraction = 0.9,
  initialViewportOffset: peekOffset,
  maxViewportOffset: peekOffset,
  snapViewportOffsets: [
    ViewportOffset.expanded,
    ViewportOffset.shrunk,
    peekOffset,
  ],
);

您可以在示例应用程序中探索所有功能。有关更多详细信息,请参阅 example 目录。

许可证

本库根据 MIT 许可证发布。有关更多详细信息,请参阅 LICENSE 文件。

贡献

如果您发现任何错误或有改进建议,请在 GitHub 存储库上创建 issue 或 pull request。欢迎贡献并表示感谢!

GitHub

查看 Github