#flutter
#flutter
Вопрос:
У меня есть список виджетов, которые я удаляю с экрана. При пролистывании я удаляю первый виджет из списка, но я понял, что метод удаления этого виджета не вызывается, поэтому AnimationContoller по-прежнему удерживается flutter и используется для последующих виджетов. Анимация для последующих виджетов завершается к моменту их вывода на передний план. Это заставляет мое приложение вести себя не так, как ожидалось. Чтобы проверить это, я печатаю строку в методе initState и dispose виджетов. initState печатает, но метод dispose этого не делает. Любая помощь, пожалуйста?
class ProfileWidget extends StatefulWidget {
ProfileWidget({Key key}) : super(key: key);
@override
State<StatefulWidget> createState() => _ProfileWidgetState();
}
class _ProfileWidgetState extends State<ProfileWidget> with TickerProviderStateMixin {
@override
void initState() {
super.initState();
print("New init");
_animationController = new AnimationController(
vsync: this,
duration: const Duration(milliseconds: 400),
);
_fadeAnimationController = new AnimationController(
vsync: this,
duration: const Duration(milliseconds: 200),
);
_fadeAnimation = new Tween(
begin: 0.0,
end: 1.0,
).animate(_fadeAnimationController);
_fadeAnimationController.forward();
}
@override
void dispose() {
print("Disposing");
if (_animationController != null) {
_animationController.dispose();
}
if (_fadeAnimationController != null) {
_fadeAnimationController.dispose();
}
super.dispose();
}
}
Ответ №1:
это известная ошибка в flutter, и обсуждение продолжается: https://github.com/flutter/flutter/issues/40940
даже если вы скопируете примеры из официальных документов, он не будет вызван: https://flutter.dev/docs/cookbook/networking/web-sockets#complete-example
однако разработчики flutter утверждают, что это желаемое поведение. Пожалуйста, выразите свою поддержку в проблеме github, если вы считаете, что это должно быть исправлено.
Комментарии:
1. Спасибо. Я обязательно это сделаю.