title: Animate position widget from live data
body: <p>In my App I want to show online buses, so i create marker to represent it.
  Every 5 seconds i refresh all vehicles marker and create again. But I want these vehicles to run smoothly on the map.</p>
  <p>So I created Stack and get screen coordinate for googleMap and draw widget. And it working, but every 5 seconds my vehicles disappear and reappear after a while.</p>
  <p>This is because I am cleaning the array, but I don't know how else to do it, any ideas?</p>
  <p>This code get new information about vehicles every 5 seconds</p>
  <pre><code>Future&lt;void&gt; testVehicle(List&lt;Departure&gt; newDepartures) async {
      if (!IterableEquality().equals(departures, newDepartures)) {
        if (mStop == null) {
          return;
        }
        
        departures.clear();
        departures.addAll(newDepartures);
  
        for (var departure in departures) {
          if (departure.isReal) {
            var screenCoordinates = await (mapController as GoogleMapController).getScreenCoordinate(LatLng(departure.sig!.latitude!, departure.sig!.longitude!));
            createVehicle(screenCoordinates, departure);
          }
        }
        notifyListeners();
      }
    }
  </code></pre>
  <p>This code create AnimateWidget in Stack</p>
  <pre><code>    var devicePixelRatio = Platform.isAndroid ? MediaQuery.of(context).devicePixelRatio : 1.0;
      var left = (screenCoordinate.x.toDouble() / devicePixelRatio) - (30 / 2);
      var top = (screenCoordinate.y.toDouble() / devicePixelRatio);
      var x = await getVehicleMarkerImage(departure.vehicleInfo.type, departure.line, departure.isReal, departure.sig?.azimuth, departure);
      var vehicle = AnimatedPositioned(
        duration: const Duration(seconds: 5),
        top: top,
        left: left,
        child: x,
      );
      mapVehicles.putIfAbsent(departure.tid, () =&gt; vehicle);
      if (mapVehicles.containsKey(departure.tid)) {
        mapVehicles.update(departure.tid, (value) =&gt; vehicle);
      } else {
        mapVehicles[departure.tid] = vehicle;
      }
    } 
  </code></pre>
  <p>Show vehicles in Stack</p>
  <pre><code>...(stopViewModel as StopGoogleMapViewModel).mapVehicles.entries.map((e) =&gt; e.value).toList(), 
  </code></pre>