分享当前页面的需求,有时需要对页面进行截图。Flutter
中截图一般使用RepaintBoundary
搭配GlobalKey
获取Widget
的截图(PlatformView
无法截图)。
但是当需要截图的目标是CustomScrollView
时,尤其是使用了SliverPersistentHeader
等Sliver
组件时,不容易想出RepaintBoundary
的嵌套位置,也就无法获取长截图。
方案
百度基本查不到有用的信息,甚至还有一些离奇的方案:
上面长截图的理想情况是 SingleChildScrollView 这种允许我们在 child 套一层 RepaintBoundary,但实际中也可能是 CustomScrollView 这种严格限制 children 类型的,此时我们可能就需要借助类似 SliverToBoxAdapter 这种容器,并且在每个 child 上都套一个 RepaintBoundary
在每个 child
上都套一个 RepaintBoundary
显然是非常非常糟糕的方案,在拍脑袋之前,我们尽可能的多检索一些资料: