我使用flutter_svg包在应用程序中渲染SVG图像,因为flutter还没有正式支持SVG,所以在我的应用程序中加载SVG图像时,我可能会延迟几秒钟,在寻找解决方案时,我发现我可以使用preCachePicture()预加载SVG图像。问题是官方的flutter_svg文档没有明确说明,也没有其他Web材料来说明如何使用此函数预加载SVG图像。
我在initState()
中调用loadPictures()
函数来预加载SVG图片。
String onboardImage = 'assets/images/onboard.svg';
@override
void initState() {
loadPictures();
super.initState();
}
Future<void> loadPictures() async {
await precachePicture(ExactAssetPicture((SvgPicture.svgStringDecoder),onboardImage), null);
}
调用preCachePicture()
后,当我想使用预缓存的图像时,如何加载它?
3条答案
按热度按时间fae0ux8s1#
要缓存多个SVG,请执行以下操作:
注意:在
main.dart
中,或者在使用SVG的小部件之前显示的小部件中执行此操作。例如,如果您需要一个SVG用于登录或注册,则可以在闪屏上执行此操作。更新:根据riccardogabellone的评论,从2021年底开始,我们应该使用
SvgPicture.svgStringDecoderOutsideViewBoxBuilder
或SvgPicture.svgStringDecoderBuilder
来代替SvgPicture.svgStringDecoder
。pcww981p2#
在小部件的initState中调用precache已经太晚了,应该在main()函数中调用这个方法,如下所示:
v1uwarro3#
**2023年更新:**扑动_svg 2.0.0+1
您可能已经注意到
precachePicture
已被弃用。hygehyge提出了一个新的工作解决方案: