Flutter, Flare: выполнение функции в конце анимации - PullRequest
0 голосов
/ 25 мая 2020

У меня простой вопрос, но я не могу найти на него ответа: есть ли способ выполнить функцию после завершения моей анимации Flare? У меня есть анимация, которая отображается при запуске приложения, и я хочу, чтобы главный экран отображался после завершения анимации. Как я могу это сделать? Я пробовал использовать Future.delayed (), но не знаю, где разместить функцию. Если я помещу его в конструктор виджета StartAnimation, EnterExitRoute будет выполняться снова и снова.

import 'package:flutter/material.dart';
import 'animations.dart';
import 'package:flare_flutter/flare_actor.dart';

String _animationName = "Start";

Center(
        child: GestureDetector(
          onTap: () {
            Navigator.push(context,
                EnterExitRoute(exitPage: this, enterPage: HomeScreen()));
          },
          child: Column(
            children: <Widget>[
              Center(
                child: Container(
                  height: 875,
                  child: FlareActor(
                    'src/animation.flr',
                    animation: _animationName,
                    fit: BoxFit.contain,
                  ),
                ),
              ),
            ],
          ),
        ),
      ),

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

Виджет FlareActor имеет для этого параметр обратного вызова :

/// Callback invoked when [animation] has completed. If [animation] is looping
/// this callback is never invoked.
final FlareCompletedCallback callback;

Другой альтернативой является использование FlareControls с методом onCompleted(String name):

/// Listen for when the animation called [name] has completed.
void onCompleted(String name) {}
0 голосов
/ 28 мая 2020

Итоговый код, рабочий:

import 'package:flutter/material.dart';
import 'animations.dart';
import 'package:flare_flutter/flare_actor.dart';

String _animationName = "Start";
bool _appStart = true;

[in build method]
  if (_appStart == true) {
              Navigator.push(context,
                EnterExitRoute(exitPage: this, enterPage: HomeScreen()));
              _appStart = false;
            }
[end of build method]

Center(
        child: Column(
          children: <Widget>[
            Center(
              child: Container(
                height: 875,
                child: FlareActor(
                  'src/animation.flr',
                  animation: _animationName,
                  fit: BoxFit.contain,
                ),
              ),
            ),
          ],
        ),
      ),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...