如何预缓存flutter flare动画

How to pre-cache flutter flare animation

我有一个需要时间来加载的耀斑加载动画。有没有办法预缓存 flutter 动画?

final AssetProvider assetProvider = AssetFlare(bundle: rootBundle, name: 'assets/animations/loop.flr');
cachedActor(assetProvider);

这是缓存演员的代码吗? 那么如何加载缓存的动画呢?

来自 https://github.com/2d-inc/Flare-Flutter/issues/180#issuecomment-550584347
您可以使用 FlareCacheBuilder 来帮助您为应用的某些部分预加载 flr 文件

代码片段

Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.grey,
      appBar: AppBar(title: Text(widget.title)),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          mainAxisSize: MainAxisSize.min,
          children: [
            Expanded(
              child: FlareCacheBuilder(
                ["assets/Filip.flr"],
                builder: (BuildContext context, bool isWarm) {
                  return !isWarm
                      ? Container(child: Text("Loading..."))
                      : FlareActor(
                          "assets/Filip.flr",
                          alignment: Alignment.center,
                          fit: BoxFit.contain,
                          animation: _animationName,
                        );
                },
              ),
            )
          ],
        ),
      ),
    );
  }

如果您想要 'global' 加载到您的 .flr 文件,正确的方法是使用 cachedActor 就像您发布的那样。

假设您之前执行过:

final assetProvider = AssetFlare(bundle: rootBundle, name: 'assets/animations/loop.flr');
await cachedActor(assetProvider);

当您尝试在 FlareActor 中使用相同的 .flr 时,它会首先尝试从您之前填充的同一缓存中加载此资产。

this example 中,Flare 团队正是这样做来预热一些文件的。但请注意,他们对 cachedActor.

使用了旧的语法规则

您可以在源代码here and here中看到,当加载资产时,它会首先尝试从缓存中加载。

最后一件事要完成,FlareCacheBuilder 在内部使用相同的 cachedActor 方法。