Я использую анимацию 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,
),
])
])));
}
}