Итак, я написал этот код, который позволяет воспроизводить анимацию там, где я нажал. Так, если я нажимаю на экран, там воспроизводится короткая анимация, где я нажимаю, если вы нажимаете несколько раз, на экране появляется несколько анимаций в течение короткого периода времени. Каждый раз, когда я нажимаю на экран, появляется контейнер, в котором воспроизводится анимация, но я не могу сложить контейнер поверх другого, поэтому, если я нажму на экране, где уже есть контейнер, анимация не будет воспроизводиться. Кажется, что Positioned не будет работать, если я нажму там, где уже есть контейнер. Как мне поместить контейнер поверх другого, чтобы я мог нажимать на одно и то же место и воспроизводить несколько анимаций поверх другого?
Это весь код, отвечающий за эту анимацию:
class HomePage extends StatefulWidget{
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage>
with SingleTickerProviderStateMixin {
final tappedPositions = <Offset>[];
AnimationController _animationController;
@override
void initState() {
_animationController = AnimationController(
vsync: this,
duration: const Duration(seconds: 2),
);
super.initState();
}
@override
Widget build(BuildContext context) {
return new Stack(
children: <Widget>[
new Column(
children: <Widget>[
new Expanded(
child: Container(
color: Colors.blue,
))]),
new GestureDetector(
onTapDown: (tabDetails) {
setState(() {
tappedPositions.add(tabDetails.localPosition);
Future.delayed(const Duration(seconds: 1), () {
tappedPositions.removeLast();
});
});
},
child: Stack(
children: <Widget>[
Container(
height: 370,
color: Colors.transparent
),
])
),
for (final position in tappedPositions)
Positioned(
top: position.dy-50,
left: position.dx-50,
child: MyAnimatedWidget(
animation: _animationController,
))]);
}
}
class MyAnimatedWidget extends StatelessWidget {
final Animation animation;
const MyAnimatedWidget({Key key, this.animation}) : super(key: key);
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
animation: animation,
child: Stack(
children: <Widget>[
Container(
height: 100.0,
width: 100.0,
color: Colors.red
/* new FlareActor(
"assets/images/tryck2.flr",
animation:"tryck",*/
),
],
),
builder: (context, child) {
return Stack(
children: <Widget>[
new Container(alignment: Alignment.center,
child: child,)
],
);
},
);
}
}
PS (Я уже задавал этот вопрос и пытался заставить его работать, но безуспешно, поэтому я спрашиваю снова, я новичок в дартс и программировании в целом)