Flutter支持所有widget的拖拽位移动画(flutter_staggered_grid_view、listView、GridView等)

134 阅读1分钟
- 支持所有widget的拖拽
- 是滑动组件的时候需要传scrollController、scrollDirection,不然无法到边缘自动滚动
- 理论支持所有widget,flutter_staggered_grid_view(支持懒加载列表), listView, GridView等

项目地址:pub.flutter-io.cn/packages/dr…

50665559704545cba7d2d273b3274f3b~tplv-k3u1fbpfcp-watermark.image.jpg

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Text(widget.title)),
    body: DragAnim(
      scrollController: scrollController,
      scrollDirection: Axis.vertical,
      buildItems: (dragItems) {
        return MasonryGridView.count(
          crossAxisCount: 4,
          mainAxisSpacing: 4,
          crossAxisSpacing: 4,
          controller: scrollController,
          itemCount: items.length,
          itemBuilder: (context, index) {
            return dragItems(
              data: items[index],
              child: Container(
                color: Colors.red,
                alignment: Alignment.center,
                child: Text(
                  items[index],
                  style: const TextStyle(fontSize: 30, color: Colors.white, decoration: TextDecoration.none),
                ),
              ),
              key: ValueKey<String>(items[index]),
            );
          },
        );
      },
      dataList: items,
    ),
  );
}