我有一个照明弹加载动画,需要时间来加载。有没有办法预先缓存颤振动画?
final AssetProvider assetProvider = AssetFlare(bundle: rootBundle, name: 'assets/animations/loop.flr');
cachedActor(assetProvider);这是缓存演员的代码吗?然后如何加载缓存的动画?
发布于 2020-02-10 05:25:39
来自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,
);
},
),
)
],
),
),
);
}发布于 2020-07-09 19:36:30
如果您想要对您的.flr文件进行“全局”加载,正确的方法是使用cachedActor,就像您发布的一样。
假设您以前执行了以下操作:
final assetProvider = AssetFlare(bundle: rootBundle, name: 'assets/animations/loop.flr');
await cachedActor(assetProvider);当您试图在一个.flr中使用相同的FlareActor时,它将首先尝试从之前填充的相同缓存加载此资产。
在这个例子中,Flare正是这样做来预热一些文件的。但是请注意,他们正在为cachedActor使用一个旧的sintaxe。
您可以在源代码这里和这里中看到,在加载资产时,它将首先尝试从缓存加载。
最后一件事是,FlareCacheBuilder在内部使用相同的cachedActor方法。
https://stackoverflow.com/questions/60134116
复制相似问题