Snaplist

一个舒适的小库,允许您创建可吸附的列表视图。

欢迎贡献 Issues 和 Pull Requests!

Snaplist 支持列表中的不同且尺寸可变的子项,并能正确地吸附。

snaplist

集成到您的项目中

在您 pubspec.yaml 的根目录下添加

dependencies:
  snaplist: ^0.1.5

集成

该库提供了一个名为 SnapListStatefulWidget

像这样使用这个 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 的工作方式与我们都熟悉的普通 Flutter builder 类似。它会为您提供 context、当前项索引和一些额外数据。
  • count - 与 ListView 中的一样,是子项的数量。

提供给每个提供者和 builder 的 data 是三个字段的组合

  • center - 是当前显示的、被引用为中心 widget 的位置。
  • next - 是用户正在滚动的下一个位置。如果处于空闲状态,则为 -1
  • progress - 是滚动和吸附的进度。值为 0100

Snaplist 默认水平滚动。您可以将 axis 设置为 Axis.vertical 以实现垂直滚动。

GitHub

https://github.com/ariedov/flutter_snaplist