Как предварительно кэшировать флаттерную анимацию - PullRequest
1 голос
/ 09 февраля 2020

У меня есть анимация загрузки вспышки, которая требует времени для загрузки. Есть ли способ предварительно кэшировать анимацию флаттера?

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

Это код для кэширования актера? Тогда как мне загрузить кэшированную анимацию?

1 Ответ

1 голос
/ 10 февраля 2020

С 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,
                        );
                },
              ),
            )
          ],
        ),
      ),
    );
  }
...