可扩展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 一样使用 ExprollablePageView。ExprollablePageView 可与任何接受 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 控制视口在滚动过程中如何变化。以下是一个用于吸附到三种状态的控制器示例
- 视口完全展开(
viewportFraction == 1.0) - 视口比屏幕略小(
viewportFraction == 0.9) 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。欢迎贡献并表示感谢!