Flutter: наклонить контейнер над другим, используя смещение - PullRequest
0 голосов
/ 20 февраля 2020

Итак, я написал этот код, который позволяет воспроизводить анимацию там, где я нажал. Так, если я нажимаю на экран, там воспроизводится короткая анимация, где я нажимаю, если вы нажимаете несколько раз, на экране появляется несколько анимаций в течение короткого периода времени. Каждый раз, когда я нажимаю на экран, появляется контейнер, в котором воспроизводится анимация, но я не могу сложить контейнер поверх другого, поэтому, если я нажму на экране, где уже есть контейнер, анимация не будет воспроизводиться. Кажется, что 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 (Я уже задавал этот вопрос и пытался заставить его работать, но безуспешно, поэтому я спрашиваю снова, я новичок в дартс и программировании в целом)

...