Моя анимация с использованием GravitySimulation не будет анимироваться - PullRequest
0 голосов
/ 20 января 2020

Анимационный контейнерный виджет остается в начальной точке анимации ie. анимация не запускается, но если вместо списка виджетов, как созданный мной список particles, используется один виджет, то анимация работает нормально. Почему это так и как мне это исправить? Заранее спасибо!

Вот мой код:

import 'package:flutter/material.dart';
import 'package:flutter/animation.dart';
import 'package:flutter/physics.dart';
import 'dart:math';

void main() => runApp(PhysicsAnimation());

class PhysicsAnimation extends StatefulWidget {
  _PhysicsAnimation createState() => _PhysicsAnimation();
}

class _PhysicsAnimation extends State<PhysicsAnimation>
    with TickerProviderStateMixin{
  AnimationController controller;
  GravitySimulation simulation;
  List<Widget> particles=[];
  bool isLoad=true;

  Random random=new Random();
  @override
  void initState() {
    super.initState();

    simulation = GravitySimulation(
      100, // acceleration
      0.0, // starting point
      2000.0, // end point
      5, // starting velocity
    );


    controller =
    AnimationController(vsync: this, upperBound: 800)
      ..addListener(() {
        setState(() {});
      });

    controller.animateWith(simulation);
  }

  @override
  Widget build(BuildContext context) {
   if (isLoad) {
     for(int i=0;i<20;i++){
      particles.add(Positioned(
          left: 50+random.nextDouble()*100,
          top: controller.value,
          height: 10,
          width: 10,
          child: Container(
            color: Colors.redAccent,
          )));}
   }
    isLoad=false;
      return MaterialApp(
      home: Stack(
          children:

            particles

      ),
    );
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }
}
...