我已经在使用flutter_svg
库中的precachePicture
函数来加载svg资产:
Future<void> loadPictures() async {
await precachePicture(
ExactAssetPicture(SvgPicture.svgStringDecoder, 'assets/graphic/two_people.svg'),
context,
);
}
然而,我有一些原始的svg字符串(比这个更复杂),需要预先缓存太多
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240"><polygon points="120 8.9 147.31 93.45 236.99 93.45 164.41 146.38 191.77 231.09 120 178.76 48.23 231.09 75.59 146.37 3.01 93.45 92.69 93.45 120 8.9" fill="#f8d64e"/></svg>
如何从SVG字符串预缓存SVG图像?
2条答案
按热度按时间bsxbgnwa1#
所以,我终于找到了解决办法:
现在,当您调用
SvgPicture.string(svgString)
时,图像已经被预缓存,因此如果svgString有点复杂,渲染不会延迟。doinxwow2#
在
flutter_svg
中删除了2.xprecachePicture
!现在你必须这样预加载:
我在加载屏幕中围绕所有SVG图像构建了一个循环:
Assets.svgImages.values
是使用flutter_gen
生成的List<String>
,包含资产文件夹中的所有SVG文件路径:-)