热搜: fiddler git ip 代理
历史搜索

解决Flutter中对CustomScrollView/Sliver组件截长图问题

游客2024-08-18 15:03:01

分享当前页面的需求,有时需要对页面进行截图。Flutter中截图一般使用RepaintBoundary搭配GlobalKey获取Widget的截图(PlatformView 无法截图)。

但是当需要截图的目标是CustomScrollView时,尤其是使用了SliverPersistentHeaderSliver组件时,不容易想出RepaintBoundary的嵌套位置,也就无法获取长截图。

方案

百度基本查不到有用的信息,甚至还有一些离奇的方案:

上面长截图的理想情况是 SingleChildScrollView 这种允许我们在 child 套一层 RepaintBoundary,但实际中也可能是 CustomScrollView 这种严格限制 children 类型的,此时我们可能就需要借助类似 SliverToBoxAdapter 这种容器,并且在每个 child 上都套一个 RepaintBoundary

在每个 child 上都套一个 RepaintBoundary 显然是非常非常糟糕的方案,在拍脑袋之前,我们尽可能的多检索一些资料:

资料地址

标签:Flutter组件