Я хочу показать анимацию, когда пользователь нажимает на экран. Анимация тоже должна быть управляемой, так как она должна сбрасываться после каждого нажатия.
Что я пробовал:
1. Показать изображение Gif в оверлее.
RenderBox renderBox = context.findRenderObject();
var size = renderBox.size;
var offset = renderBox.localToGlobal(Offset.zero);
_myGif = Image.asset('images/mygif.gif', width: 100, height: 100,);
return OverlayEntry(
builder: (context) => Positioned(
left: offset.dx - 50.0 + size.width/2,
top: offset.dy - 50.0 + size.height/2,
child: Container(
child: _myGif
),
)
);
Проблема: анимация Gif не контролируется. Анимация также воспроизводится из случайных кадров и заканчивается каждый раз случайными кадрами.
Использовать сторонний виджет (gif_ani)
_animationCtrl = GifController (vsync: this, duration: new Duration (миллисекунды: 1000), frameCount: 38);
_mygifAnimation = GifAnimation (
ширина: 100,0,
высота: 100,0,
image: AssetImage ('images / mygif.gif'),
контроллер: _animationCtrl,
);
Проблема: она работает только тогда, когда она не наложена. Когда GifAnimation добавляется как дочерний элемент в Overlay, он вообще не отображается.
- Используйте Flame для запуска спрайт-листа
Проблема: AnimationAsWidget не соответствует моим требованиям, так как мне нужно управлять анимацией. Другие способы сделали бы мой код слишком сложным, так как я не собираю игру.
Есть ли какое-нибудь решение по этому поводу? Заранее спасибо.