Как разместить NimaAnimations во флаттере - PullRequest
0 голосов
/ 22 ноября 2018

Я использую анимацию Nima в одном из моих файлов Dart.Тем не менее, я не могу избавиться от него, когда он будет завершен.NimaAnimation имеет абстрактный класс для NimaController, но, к сожалению, у него нет функции утилизации, чтобы остановить его.

Проблема, с которой я сталкиваюсь из-за этого, - это проблемы с производительностью.Я даже пытался использовать наложение производительности, чтобы наблюдать за использованием памяти, и я заметил, что анимация не удаляется, и она продолжает рендеринг в бэкэнде, даже когда я перешел на новый экран.Код, который я написал для этого:

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:maui/screens/tab_home.dart';
import 'package:nima/nima_actor.dart';

class WelcomeScreen extends StatefulWidget {
  @override
  State createState() => new WelcomeScreenState();
}

class WelcomeScreenState extends State<WelcomeScreen> {
  bool delayed;
  var animatecontrol = null;
  NimaController nimaController;
 NimaActor nima ;
  void initState() {
    super.initState();
       nima = new NimaActor(
      "assets/quack",
      alignment: Alignment.center,
      fit: BoxFit.scaleDown,
      animation: 'welcome with hello',
      mixSeconds: 0.2,

    );
    new Future.delayed(const Duration(milliseconds: 6200), () {
      Navigator.of(context).pushReplacementNamed('/tab');
      setState(() {
     nima.controller;
        delayed = true;
      });
    });
  }

  void dispose() {
    super.dispose();

  }

  @override
  Widget build(BuildContext context) {
    MediaQueryData media = MediaQuery.of(context);

    var size = media.size;


    // TODO: implement build
    return (delayed == true)
        ? new TabHome()
        : new Scaffold(
            body: new Container(
                decoration: new BoxDecoration(
                  color: Colors.purple,
                ),
                child: new Stack(
                    alignment: AlignmentDirectional.bottomCenter,
                    children: <Widget>[
                      new Column(
                          mainAxisAlignment: MainAxisAlignment.center,
                          crossAxisAlignment: CrossAxisAlignment.center,
                          children: <Widget>[
                            new AspectRatio(
                              aspectRatio: size.height > size.width ? 1.5 : 3.8,
                              child: nima,
                            ),
                          ])
                    ])));
  }
}

1 Ответ

0 голосов
/ 25 ноября 2018

Nima Animator имеет атрибуты приостановлены и завершены.Это может помочь в управлении состоянием анимации.подробности см. по этой ссылке (пример):

https://github.com/2d-inc/Nima-Flutter/blob/master/example/hop/lib/main.dart

...