Snaplist
一个舒适的小库,允许您创建可吸附的列表视图。
欢迎贡献 Issues 和 Pull Requests!
Snaplist 支持列表中的不同且尺寸可变的子项,并能正确地吸附。

集成到您的项目中
在您 pubspec.yaml 的根目录下添加
dependencies:
snaplist: ^0.1.5
集成
该库提供了一个名为 SnapList 的 StatefulWidget。
像这样使用这个 widget
import 'package:snaplist/snaplist.dart';
用法
像使用任何 widget 一样使用它
Widget build(BuildContext context) {
return SnapList(
sizeProvider => (index, data) => Size(100.0, 100.0),
separatorProvider => (index, data) => Size(10.0, 10.0),
builder: (context, index, data) => SizedBox(),
count: 1,
);
}
属性
有 4 个必填字段
sizeProvider是每个 widget 大小的提供者。该库会将每个构建的 widget 包装到一个指定大小的 Sized Box 中。这是必需的,以便吸附计算能够正确工作。separatorProvider类似于sizeProvider,但此大小将用于构建列表分隔符。builder的工作方式与我们都熟悉的普通Flutterbuilder 类似。它会为您提供 context、当前项索引和一些额外数据。count- 与ListView中的一样,是子项的数量。
提供给每个提供者和 builder 的 data 是三个字段的组合
center- 是当前显示的、被引用为中心 widget 的位置。next- 是用户正在滚动的下一个位置。如果处于空闲状态,则为-1。progress- 是滚动和吸附的进度。值为0到100。
Snaplist 默认水平滚动。您可以将 axis 设置为 Axis.vertical 以实现垂直滚动。